ソースの場所にあるすべての.csvファイルをターゲットの場所に移動するシェルスクリプトを作成します。条件は、対応する.txtファイルを含む.csvファイルのみを移動する必要があることです。
例: source:/home/source には abc.csv,abc.txt,def.csv,def.txt,efg.csv があるため、条件に応じて abc.csv,def.csv だけをターゲットディレクトリに移動し、efg に移動する必要があります。します。 csvは対応するefg.txtファイルではないため、ターゲットディレクトリに移動しないでください。
答え1
ファイルを繰り返しながら、同じファイル名の幹を持つファイルがあるかどうかをcsv
テストします。txt
存在する場合、csv
ファイルが移動されます。
sourcedir=/some/dir
destdir=/some/other/dir
for csvfile in "$sourcedir"/*.csv; do
txtfile="${csvfile%.csv}.txt"
if [ -e "$txtfile" ]; then
printf 'Will move %s to %s\n' "$csvfile" "$destdir"
# mv -i "$csvfile" "$destdir"
fi
done
パラメータ拡張は現在のファイル名の末尾を${csvfile%.csv}.txt
削除します。.csv
$csvfile
.txt
このコマンドはセキュリティ上の理由からmv
コメントアウトされました。