Unix命令将Gzip文件移动到主目录

时间:2013-02-23 10:06:34

标签: unix command gzip

Unix命令用于获取最近30分钟修改过的文件列表,这些文件完美无缺。

touch -t 02231249.00 /tmp/last30min
find /mydirectory -type f -newer /tmp/last30min
rm /tmp/last30min

有人可以请我提供gzip这些文件并将其移至home或tmp目录的命令。

感谢您的帮助!!!

2 个答案:

答案 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