Linux:列出具有给定名称的子目录的内容?

Linux:列出具有给定名称的子目录的内容?

我正在使用 linux 分析 windows 目录结构。结构如下:

/Documents and settings
  /username1
    /My Documents
    ...
  /username2
    /My Documents
    ...
  ...

我可以执行什么命令以便列出所有“我的文档”目录的内容(和子文件夹),如下所示:

/Documents and Settings/username1/My Documents/filename
/Documents and Settings/username1/My Documents/subdir/filename
/Documents and Settings/username2/My Documents/filename

基本上有很多用户,但几乎没有人在“我的文档”文件夹中有任何内容。我只想找到并显示那些用户的内容有文件。

编辑:每个“用户名”目录都包含许多子目录。我只想列出“我的文档”文件夹下的树,但一次列出所有用户名。

答案1

结合前两个答案,使用 find 和 ls -R:

查找“/Documents and settings”-name“我的文档”-exec ls -R {} \;

这将找到所有我的文件目录并列出其下的所有内容,并附上完整路径名。您需要使用引号,因为目录名中有空格。

编辑:解释一下它的工作原理。它开始于/文档和设置,寻找任何匹配的文件或目录我的文件。对于找到的每个路径,它会用 ls 中的 {} 替换路径。\; 表示命令的结束。

答案2

只是为了添加到集合中,ls -R 并没有真正产生好的输出,所以我使用命令

find "/Documents and settings" -name "My Documents" -exec tree -f -i --noreport {} \;

答案3

ls -R path_to_your_dir

或者

ls -lR path_to_your_dir

以获得更好的视野

然而,最佳视野是

find path_to_your_dir

注意:-R 表示递归

答案4

如果您确实想查看路径名但又不想有完整的递归 -R 列表,这似乎大致可以满足您的要求,但有点笨重:

find . -type d -name '*Documents' ! -empty | (while read d; do echo $d; ls -la $d; done)

相关内容