回答:
フォルダーの内容を再帰的にコピーする場合(1つのエラーがスローされます。以下の選択肢があります):
cp -r * sub/
もう少しハックしますが、空でないサブディレクトリで動作します:
TARGETDIR='targetdir here';cp -r `find . -maxdepth 1 ! -name "$TARGETDIR"` "$TARGETDIR"
別のワンライナー:
TARGETDIR='targetdir here';for file in *;do test "$file" != "$TARGETDIR" && cp "$file" "$TARGETDIR/";done
または再帰的:
TARGETDIR='z';for file in *;do test "$file" != "$TARGETDIR" && cp -r "$file" "$TARGETDIR/";done
findコードに満足しています:D
xargsまたはを使用し-execます。必要なしgrep-使用! -name "$TARGETDIR"または類似。の周りに比類のない引用符があり$fileます。再帰cpは、最初のコマンド以外では意図したとおりに機能するとは思わない。
仮にはtargetあなたのシェルがbashのであれば、ターゲットサブディレクトリの名前です。
shopt -s extglob
cp -r !(target) target/
kshでは、直接行うことができますcp -r !(target) target/。
zshのでは、あなたが行うことができsetopt ksh_glob、その後cp -r !(target) target/。setopt extended_glob次に、別の可能性がありcp -r ^target target/ます。
これにより、ターゲットディレクトリ自体を含まないドットファイルを含むすべてがターゲットディレクトリにコピーされますSUBDIR。
for i in `ls -a | grep -Ev '^(SUBDIR|\.\.?)$'`; do cp $i SUBDIR; done
これは、たとえばdirCopy.shファイルに含まれます
for i in `ls`
do
if [ $i != "subDir" ]
then
`cp -r $i subDir`
fi
done
コンソールで「sh dirCopy.sh」として実行します
ls:for file in *。バックティックは不要です-を使用します$()。コマンドの$()周りにバックティック(または)が不要です(cpエラーメッセージが生成されます)。