Rsync 和按目的地日期分组

Rsync 和按目的地日期分组

我正在将文件从闪存卡复制到本地硬盘驱动器上,但我想将目标文件分组到与文件修改日期相对应的目录中。有什么建议么?

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

如果要求不包括rsyncand 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,考虑目录中的异常字符,使其递归等)

相关内容