我有一种情况,我想从 linux 下的数千个目录中复制一个特定文件“transaction.log”,并构建一个包含这些相同特定文件的 tar 文件。
例子: 我在/user/foo/dirs/下有数千个目录
/user/foo/dirs/dir1
/user/foo/dirs/dir2
/user/foo/dirs/dir3
..
..
..
/user/foo/dirs/dir50000
在每个目录中,有几个文件和一个 transaction.log 文件。我想从所有 50000 个目录中复制这个 transaction.log 文件并将它们存储在一个 tar 文件中。
如果有办法,你能帮帮我吗?
谢谢。
解决方案:
好的,我发现了这个问题,因为有一些指向其他磁盘的符号链接(symbolic link)发现工作不正常。解决方案是将 -follow 选项与 find 一起使用以跟踪符号链接(symbolic link)。谢谢。 我使用以下命令
找到。 -follow -type f -name "transaction.log"| tar --create --files-from ->/foo/Stats_transaction_Object.tar.gz
最佳答案
带有 {} 的还不错,但它会为每个文件运行一个单独的 tar 进程。这是一个单独的 tar 进程,因此速度要快得多:
find /where/ever -name transaction.log -print | tar --create --files-from - > /somewhere/else/foo.tar
关于Linux:从多个目录复制一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149554/