Unix命令用于获取最近30分钟修改过的文件列表,这些文件完美无缺。
touch -t 02231249.00 /tmp/last30min
find /mydirectory -type f -newer /tmp/last30min
rm /tmp/last30min
有人可以请我提供gzip这些文件并将其移至home或tmp目录的命令。
感谢您的帮助!!!
答案 0 :(得分:2)
将查找命令的参数用空字符分隔(如果文件名包含空格,则很重要)到xargs
以完成工作
find /mydirectory -type f -newer /tmp/last30min -print0 | xargs -0 -I{} sh -c 'gzip "{}"; mv "{}".gz ~'
其中-I{}
告诉xargs
使用输入行替换命令中的每个{}
,即find
找到的当前文件。
如果你正在使用Z shell(zsh
),它会更简单,一切都可以在一个oneliner上完成:
for i (/mydirectory/**/*(mm-30)) { gzip $i && mv $i.gz ~ }
此处**
以递归方式进行搜索,(mm-30)
表示 m 在最后一个( - )30 m inutes中。
答案 1 :(得分:1)
你的触摸命令无法正常工作,我检查了时间戳,它们是在我的时区中的下一个日期:
$ 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