すべてのファイルを1つのディレクトリ(SRC)から別のディレクトリ(DES)にコピーする小さなスクリプトがあります。このスクリプトは完全に実行されています。bash shell breakとcontinueを使用してある場所から別の場所にファイルをコピーします。
#!/bin/bash
SRC="/home/user/dir1/*"
DES="/home/user/dir2/"
for file in "$SRC"
do
if [ -f "$file" ]
then
cp "$file" "$DES"
echo "$file -----> file copied"
fi
done
今あるディレクトリから別のディレクトリにファイルをコピーしながら、私はそのファイルが既に(SRC)ディレクトリの同じ名前を持つ(DES)ディレクトリに存在している場合、コピーファイルをスキップして続行するか、考えていますどのようないつものようにソースからデスティネーションまで残っているファイルですか?
ここでは、この動作を実行するためにブレークしてループを続ける方法はありますか?
ありがとう、
-eファイル名を確認してください –
これは1つのファイル '/ home/user/dir1/*'のみをコピーします。すべてのパラメータを引用しているため、グロブ展開は実行されません。 – chepner
'for $ SRC'には、値が単語分割の対象となるため、独自の問題があります。 'SRC =/home/user/dir1'を設定し、' $ SRC "/ *'の 'forファイルを繰り返し処理するか、配列を使って展開した名前のリストを格納します:' SRC =(/ home/user/dir1/*); "$ {SRC [@]}"のファイルの場合。後で展開する変数にグロブを格納するのは良い方法ではありません。 – chepner