我做了一些尝试来解决以下问题:
编写命令管道以查找目录层次结构(例如我的主目录)中30天未访问的文件并压缩它们。
有人可以在下面解释我做错了什么,我是unix的新手:
find ~ -type f -atime +30 -exec gzip -cv test
这是我得到的错误:
find: paths must precede expression: gzip
Usage: find [-H] [-L] [-P] [-Olevel] [-D] help|tree|search|stat|rates|opt|exec] [path...] [expression]
答案 0 :(得分:2)
将{} \;
添加到最后。
如果要压缩文件,请不要使用-c
标志;而是写入stdout。
find ~ -type f -atime +30 -exec gzip -v {} \;
如果要将文件捆绑到tarball中,请使用tar
代替gzip
。同时将\;
更改为+
以将所有文件传递给单个tar命令,而不是为每个文件单独运行tar。 (注意这只适用于GNU find,这在Linux上很好,但可能不适用于没有GNU工具集的其他UNIX版本。)
find ~ -type f -atime +30 -exec tar -cvf files.tar.gz {} +
请注意,严格来说,这些不是管道。没有|
。您的教授可能会打算以不同的方式解决这个问题。如果是这样的话,我会将其作为练习让你解决。