2015-02-05 133 views
0

我已经做了一些attemps做到以下几点问题:写命令管道(UNIX)

写命令管道要查找一个目录层次结构的文件(如我的主目录)还没有被访问持续30天并压缩它们。

有人能解释我不当下面做,我是新来的UNIX:

find ~ -type f -atime +30 -exec gzip -cv test 

这里是我的BTW得到的错误:

find: paths must precede expression: gzip 
Usage: find [-H] [-L] [-P] [-Olevel] [-D] help|tree|search|stat|rates|opt|exec] [path...] [expression] 
+1

添加'{} \;'到最后。顺便说一句 - 根本不是C问题。 –

+1

这对于“内核”或“c”语言标记来说绝对*无关。 *删除* *并添加“unix”。请不要滥用标签系统。 – WhozCraig

+0

当我把它作为标签时,我并没有想到。我添加了{} \; (你能解释一下这个说什么吗?)并且我得到相同的错误 'code'find〜-type f -atime +10 gzip -cv test {} \; 'code' –

回答

2

添加{} \;到底。

  1. 如果您想压缩文件,请不要使用-c标志;写入标准输出。

    find ~ -type f -atime +30 -exec gzip -v {} \; 
    
  2. 如果要捆绑文件成压缩包,然后用tar代替gzip。还要将\;更改为+以将所有文件传递到单个tar命令,而不是为每个文件单独运行tar。 (注意:与GNU这只能发现,这是在Linux上很好,但可能无法在没有GNU工具集运其他UNIX系统的工作。)

    find ~ -type f -atime +30 -exec tar -cvf files.tar.gz {} + 
    

注意,这些都不是管道,严格地说。没有|。你的教授可能打算以不同的方式解决这个问题。如果是这样,我会把它作为练习来解决。

+0

谢谢。我不认为我需要在这里执行。我也欣赏将文件捆绑在一起的额外消息! –