Unix:如何只压缩每个文件夹的第 N 个文件?

Sam*_*ami 7 tar

我有一个包含 2Gb 图像的文件夹,子文件夹有几层深。

我只想N将每个(子)文件夹的文件存档在 tar 文件中。我试图用findtail然后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每个文件夹的文件?(不需要文件顺序)

thr*_*rig 0

对目录名使用哈希,并且仅在哈希值计数低于阈值时才发出文件名。例如

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)