This question was migrated from Server Fault because it can be answered on Stack Overflow. Migrated6年前。Learn more
我有一个脚本,列出了一个特定目录中的所有文件,并每周给我发送一封邮件。
但我想有一个比这更好的清单;

folder/subfolder/file1.avi
folder/subfolder/file2.avi
..
folder5/subfolder34/file52.mov

有什么简单的方法可以做到这一点吗?我今天的台词是:
find /volume2/Disk2 -type f \( -iname "*.avi" -o -iname "*.m*v" -o -iname "*.iso" -o -iname "*.mp*" \) | sort -do /tmp/$DATE-filmer.txt
我想要的是这样的东西;
folder1/
  File1.avi
  File2.mov
Folder4
  Subfolder1
    File12.mov

最佳答案

使用tree命令可以很容易地完成类似的操作,该命令默认安装在许多系统上,或可从大多数包存储库获得:

$ tree -P "*.mp*|*.avi"
.
├── foo
│   ├── bar
│   │   └── movie.avi
│   ├── some.avi
│   └── something.mp3
└── zot.mp4

不带过滤器:
$ tree
.
├── foo
│   ├── bar
│   │   └── movie.avi
│   ├── some.avi
│   ├── something.doc
│   └── something.mp3
├── something.txt
└── zot.mp4

10-05 18:29