我对 Linux 还不太熟悉,我正在尝试传输一些否文件基于修改日期。
我发现这个命令ls -tr | head -100
,据我了解,它将列出前 100 个文件(头-100)基于修改日期(-t,最新优先) 但相反(-r 反转列表,所以现在最旧的在最前面?)。
但我的下一步是同步我仍然不知道我是否可以使用|(管道符) 或者&& (&符号)
所以现在我有这个:
ls -tr | head -350 | rsync * <remote-host>
,但显然rsync *
会转移所有内容。所以我现在只能这样了。我应该把前两个命令放在 rsync 中吗?或者我可以使用awk
命令吗?
任何帮助/提醒都会受到欢迎。
答案1
您还可以使用查找。
find DIR -maxdepth 1 -type f -newermt DATE -exec rsync {} destination \;
假设您想要 rsync 特定目录中的文件,但从 2014 年 9 月 21 日到现在,该特定目录中的文件夹中没有任何文件夹或文件。您需要运行的命令是
find /path/to/dir -maxdepth 1 -type f -newermt 20140921 -exec rsync {} destination \;
答案2
如果你确定文件名不包含空格或非 ASCII 字符,则可以使用
rsync `ls -tp | grep -v / | head -n <n>` <destination> <options>