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

Unix命令来Gzip文件并将其移动到主目录,unix,command,gzip,Unix,Command,Gzip,下面的Unix命令用于获取最近30分钟修改过的文件列表,这些文件工作正常 touch -t 02231249.00 /tmp/last30min find /mydirectory -type f -newer /tmp/last30min rm /tmp/last30min 有人能给我提供gzip这些文件的命令并将其移动到主目录或tmp目录吗 谢谢你的帮助 将find命令的参数用空字符分隔(如果文件名中包含空格,则这一点很重要)通过管道传输到xargs来执行此任务 find /mydirec

下面的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 ~'
其中
-I{}
告诉
xargs
用输入行替换命令中的每个
{}
,即
find
找到的当前文件

如果您使用的是Z shell(
zsh
),它会更简单,所有事情都可以在一行程序中完成:

for i (/mydirectory/**/*(mm-30)) { gzip $i && mv $i.gz ~ }

此处
**
递归搜索,并且
(mm-30)
表示在最后(-)30分钟内修改。

您的触摸命令无法正常工作,我检查了时间戳,它们用于在我的时区中的以下日期:

$ 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
gzip&&mv.gz~