フラッシュカードからローカルハードドライブにファイルをコピーしていますが、ターゲットファイルをファイル変更日に対応するディレクトリにグループ化したいと思います。どんな提案がありますか?
ls -l
-rw-rw-rw- 1 admin dba 1390 Sep 6 2019 file1
-rw-rw-rw- 1 admin dba 1390 Sep 9 2019 file2
# ...magic rsync process...
/mnt/c/2019-09-06/file1
/mnt/c/2019-09-09/file2
答え1
rsync
要件におよびが含まれていない場合は、スクリプトで次のことがsort
できます。BASH
for filename in /path/to/source/directory/*
do
mdate=$(date -r "${filename}" +'%Y-%m-%d')
destination="/path/to/destination/${mdate}/"
mkdir -p "${destination}"
cp "${filename}" "${destination}/"
done
デフォルトでは、スクリプトはソースディレクトリ内の各ファイルを繰り返しながら起動されますfor
。次に、ファイルの変更日を変数に保存します$mdate
。次に、変更された日付である宛先ディレクトリを定義して作成します$mdate
。最後に、ファイルをターゲットディレクトリにコピーします。
これはこれを行う方法の一般的な概要を提供します。ユースケースに応じてさまざまなことを調整できます(例:rsync
代わりに使用cp
、ディレクトリ内の珍しい文字の考慮、再帰的な設定など)。