【发布时间】:2014-09-24 20:10:16
【问题描述】:
我正在尝试查找 *.gz 类型的所有文件并将它们归类到 total.gz,我认为我对此非常接近。
这是我用来列出所有 *.gz 的命令
找到/home/downloaded/。 -maxdepth 3 -type d ( ! -name . ) -exec bash -c "ls -ltr '{}' " \
如何修改它,以便将它们连接起来并写入 ~/total.gz
更新: 下载的目录结构如下
/downloaded/wllogs/303/07252014/SysteOut.gz
/downloaded/wllogs/301/07252014/SystemOut_13.gz
/downloaded/wllogs/302/07252014/SystemOut_14.gz
【问题讨论】:
-
您的
find调用似乎有点复杂。find /home/downloaded/. -maxdepth 3 -type f -name "*.gz" -print0 | xargs -0 cat > total.gz不是更好的方法吗? (或者,假设 GNUfind:find /home/downloaded/. -maxdepth 3 -type f -name "*.gz" -exec cat {} + > total.gz) -
是的,你是对的。这个发现是我的代码中的 sn-p,我试图修改以完成这项任务。顺便说一句,“+”是什么意思
-
+是一个 GNUfind扩展,允许它使用多个参数-exec给定命令,而不是使用-exec cat {} \;获得的一次一个命令.