编写命令管道 (Unix)
Write a command pipeline (Unix)
我做了几次尝试来解决以下问题:
Write a command pipeline to find files in a directory hierarchy (e.g my home directory) that have not been accessed for 30 days and compress them.
谁能解释一下我在下面做错了什么,我是 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]
在最后添加{} \;
。
如果你想就地压缩文件,不要使用-c
标志;改为写入标准输出。
find ~ -type f -atime +30 -exec gzip -v {} \;
如果要将文件打包成一个 tar 球,请使用 tar
而不是 gzip
。还要将 \;
更改为 +
以将所有文件传递给单个 tar 命令,而不是将每个文件分别 运行 tar。 (请注意,这仅适用于 GNU find,它在 Linux 上很好,但可能不适用于其他没有 GNU 工具集的 UNIX 版本。)
find ~ -type f -atime +30 -exec tar -cvf files.tar.gz {} +
请注意,严格来说,这些不是管道。没有|
。你的教授可能希望你以不同的方式解决这个问题。如果是这样,我会把它作为练习留给你解决。
我做了几次尝试来解决以下问题:
Write a command pipeline to find files in a directory hierarchy (e.g my home directory) that have not been accessed for 30 days and compress them.
谁能解释一下我在下面做错了什么,我是 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]
在最后添加{} \;
。
如果你想就地压缩文件,不要使用
-c
标志;改为写入标准输出。find ~ -type f -atime +30 -exec gzip -v {} \;
如果要将文件打包成一个 tar 球,请使用
tar
而不是gzip
。还要将\;
更改为+
以将所有文件传递给单个 tar 命令,而不是将每个文件分别 运行 tar。 (请注意,这仅适用于 GNU find,它在 Linux 上很好,但可能不适用于其他没有 GNU 工具集的 UNIX 版本。)find ~ -type f -atime +30 -exec tar -cvf files.tar.gz {} +
请注意,严格来说,这些不是管道。没有|
。你的教授可能希望你以不同的方式解决这个问题。如果是这样,我会把它作为练习留给你解决。