我目前正在使用此脚本行从给定的目录结构中查找所有日志文件,并将它们复制到另一个目录,以便我可以轻松地压缩它们。
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
答案1
将它们复制到另一个目录以进行压缩的原因是什么? 以下命令将创建一个压缩的 tar 文件,其中包含所有日志文件,同时保持目录结构不变(假设它是从根目录运行的:
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
答案2
尝试使用太平洋保险协会处于直通模式
find . -name '*.log' | cpio -pdm /tmp/allLogs
答案3
find . -name "*.log" | tar -cz --files-from - -f /path/to/file.tgz
答案4
那么如何仅将日志过滤到存档中呢:
sudo tar -zcvf archive.tar.gz /path/**/*.log