![Rsync 和按目的地日期分组](https://linux22.com/image/167129/Rsync%20%E5%92%8C%E6%8C%89%E7%9B%AE%E7%9A%84%E5%9C%B0%E6%97%A5%E6%9C%9F%E5%88%86%E7%BB%84.png)
我正在将文件从闪存卡复制到本地硬盘驱动器上,但我想将目标文件分组到与文件修改日期相对应的目录中。有什么建议么?
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
and 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
,考虑目录中的异常字符,使其递归等)