我想知道如何仅列出焦油文件的内容仅至一定级别?

我明白 tar tvf mytar.tar 会列出所有文件,但有时我只想将目录降至一定级别。

同样,命令 ls, ,如何控制将要显示的子目录的级别?默认情况下,它将仅显示直接的子目录,但不会进一步发展。

有帮助吗?

解决方案

tar tvf scripts.tar | awk -F/ '{if (NF<4) print }'


drwx------ glens/glens       0 2010-03-17 10:44 scripts/
-rwxr--r-- glens/www-data 1051 2009-07-27 10:42 scripts/my2cnf.pl
-rwxr--r-- glens/www-data  359 2009-08-14 00:01 scripts/pastebin.sh
-rwxr--r-- glens/www-data  566 2009-07-27 10:42 scripts/critic.pl
-rwxr-xr-x glens/glens     981 2009-12-16 09:39 scripts/wiki_sys.pl
-rwxr-xr-x glens/glens    3072 2009-07-28 10:25 scripts/blacklist_update.pl
-rwxr--r-- glens/www-data 18418 2009-07-27 10:42 scripts/sysinfo.pl

请确保注意,由于 /组中的 /组中的 /组,该数字为3+多么多级。如果你只是这样

tar tf scripts.tar | awk -F/ '{if (NF<3) print }'

scripts/
scripts/my2cnf.pl
scripts/pastebin.sh
scripts/critic.pl
scripts/wiki_sys.pl
scripts/blacklist_update.pl
scripts/sysinfo.pl

只有两个。

您可能可以输出输出 ls -R 对此 awk 脚本,并具有相同的效果。

其他提示

深度= 1

tar --exclude="*/*" -tf file.tar


深度= 2

tar --exclude="*/*/*" -tf file.tar

如果我们能告诉 find 命令查看焦油文件,但我怀疑这是可能的。

我快速而丑陋(而不是万无一失)的方法是限制目录分离器的数量,例如:

 $ tar tvf myfile.tar | grep -E '^[^/]*(/[^/]*){1,2}$'

2 告诉显示不超过2个斜线(在我的情况下,用户/组分隔符已经生成),因此最多最多显示文件。您可能需要尝试使用不同的数字代替2。

另一个选择是 档案馆. 。您将其安装,然后CD进入。然后,您可以像其他文件系统一样对其进行任何操作。

$ archivemount /path/to/files.tgz /path/to/mnt/folder

它似乎比焦油方法快。

我同意 莱昂布洛伊的回答 - 在Tarball本身中无法直接做到这一点。

关于您问题的第二部分, ls 没有最大深度选项。您可以重复 一切ls -R, ,但这通常不是很有用。

但是你可以两者都做到这一点 findtree. 。例如,要列出文件和目录一个级别,您可以做

find -maxdepth 2

或者

tree -L 2

tree 也有一个 -d 选项,递归列出目录,但没有文件,我发现它比 -L, , 一般来说。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top