我有一个包含 2Gb 图像的文件夹,子文件夹有几层深。
我只想N
将每个(子)文件夹的文件存档在 tar 文件中。我试图用find
再tail
然后tar
,但无法管理得到它的工作。这是我尝试过的(假设N = 10
):
find . | tail -n 10 | tar -czvf backup.tar.gz
Run Code Online (Sandbox Code Playgroud)
...输出此错误:
Cannot stat: File name too long
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?想一想 - 即使它有效,我认为它只会压缩所有文件夹的前 10 个文件,而不是每个文件夹的 10 个文件。
如何获取N
每个文件夹的文件?(不需要文件顺序)
对目录名使用哈希,并且仅在哈希值计数低于阈值时才发出文件名。例如
find . -depth -type f \
| perl -MFile::Spec -nle '(undef,$d,$f)=File::Spec->splitpath($_); print if $seen{$d}++ < 3' \
| tar ...
Run Code Online (Sandbox Code Playgroud)