2

下面的 Unix 命令用于获取最近 30 分钟修改文件的列表,这些文件运行良好。

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

有人可以向我提供 gzip 这些文件并将其移动到主目录或 tmp 目录的命令吗?

谢谢你的帮助!!!。

4

2 回答 2

2

用空字符分隔的 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中修改。

于 2013-02-23T10:56:28.293 回答
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
于 2013-02-23T11:02:07.463 回答