下面的 Unix 命令用于获取最近 30 分钟修改文件的列表,这些文件运行良好。
touch -t 02231249.00 /tmp/last30min
find /mydirectory -type f -newer /tmp/last30min
rm /tmp/last30min
有人可以向我提供 gzip 这些文件并将其移动到主目录或 tmp 目录的命令吗?
谢谢你的帮助!!!。
用空字符分隔的 find 命令的参数(如果文件名包含空格很重要)来xargs
完成这项工作
find /mydirectory -type f -newer /tmp/last30min -print0 | xargs -0 -I{} sh -c 'gzip "{}"; mv "{}".gz ~'
where-I{}
告诉用输入行xargs
替换{}
命令中的 every,即 . 找到的当前文件find
。
如果您使用的是 Z shell ( zsh
),它会更简单,一切都可以在 oneliner 中完成:
for i (/mydirectory/**/*(mm-30)) { gzip $i && mv $i.gz ~ }
这里**
递归搜索,(mm-30)
意味着在最后 (-) 30 m inutes中修改。
您的触摸命令无法正常工作,我检查了时间戳,它们在我的时区中用于以下日期:
$ touch -t 02231249.00 /tmp/last30min
$ perl -e'print scalar localtime((stat("/tmp/last30min"))[9])'
Sat Feb 23 12:49:00 2013jamie@jamie-Ideapad-Z570:~/temp$
我认为这个命令会满足你的要求
for f in `find . -mmin -30 -print`;do echo $f;gzip -c $f > $HOME/$f.gz;done