我目前正在使用这个脚本行来查找给定的目录结构中的所有日志文件,并将它们复制到另一个可直接压缩的日志文件中。
find . -name "*.log" -exec cp \{\} /tmp/allLogs/ \;
我有的问题是,目录/子目录信息会丢失,因为我只复制文件。
比如我有:
./product/install/install.log ./product/execution/daily.log ./other/conf/blah.log
最后我得到:
/tmp/allLogs/install.log /tmp/allLogs/daily.log /tmp/allLogs/blah.log
我想有:
/tmp/allLogs/product/install/install.log /tmp/allLogs/product/execution/daily.log /tmp/allLogs/other/conf/blah.log
什么是复制到另一个目录压缩他们的原因? 下面将创build一个压缩的tar文件closures所有的日志文件,同时保持目录结构在一个步骤(假设它是从根目录运行:
find . -iname '*.log' -print0 | xargs -0 tar zcf /tmp/test.tar.gz
例如:
kbrandt@alpine:~/scrap/tar$ find . *.log . ./foo ./bar ./bar/baz.log kbrandt@alpine:~/scrap/tar$ find . -iname '*.log' -print0 | xargs -0 tar zcf /tmp/test.tar.gz #List files in the archive with the -t switch kbrandt@alpine:~/scrap/tar$ tar -tzf /tmp/test.tar.gz ./bar/baz.log
尝试在传递模式下使用cpio
find . -name '*.log' | cpio -pdm /tmp/allLogs
find . -name "*.log" | tar -cz --files-from - -f /path/to/file.tgz