0

我有一个脚本,列出了特定目录中的所有文件,并每周给我发一封邮件。但我想要一个比这更好的列表;

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

是否有捷径可寻?我今天的bashline: 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
4

2 回答 2

4

您可以使用该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
于 2013-10-02T19:13:10.900 回答
1
export dir=''; export prefix='  ';
find /volume2/Disk2 -type f \( -iname "*.avi" -o -iname "*.m*v" -o -iname "*.iso" -o -iname "*.mp*" \) |
while read file; do \
  if [ ! "$dir" == "$(dirname $file)" ]; then \
    export dir="$(dirname $file)";
    slashes=$(echo "$dir" | sed 's#[^/]##g' | wc -c);
    export prefix='';
    for (( i=1; i<$slashes; i++ )); do \
      export prefix="$prefix  ";
    done;
    echo "$prefix$dir/";
    export prefix="$prefix  ";
  fi;
  echo "$prefix$(basename $file)";
done

对我来说,随机 CPAN 目录上的示例输出片段:

  ./.cpan/build/Sub-Uplevel-0.24-GduPEf/
    Makefile
    dist.ini
    META.json
    perlcritic.rc
    README.PATCHING
    META.yml
    Makefile.PL
      ./.cpan/build/Sub-Uplevel-0.24-GduPEf/blib/bin/
        .exists
        ./.cpan/build/Sub-Uplevel-0.24-GduPEf/blib/lib/Sub/
          Uplevel.pm
          .exists
            ./.cpan/build/Sub-Uplevel-0.24-GduPEf/blib/lib/auto/Sub/Uplevel/
              .exists
      ./.cpan/build/Sub-Uplevel-0.24-GduPEf/blib/script/
        .exists
      ./.cpan/build/Sub-Uplevel-0.24-GduPEf/blib/man1/
        .exists
      ./.cpan/build/Sub-Uplevel-0.24-GduPEf/blib/arch/
        .exists
            ./.cpan/build/Sub-Uplevel-0.24-GduPEf/blib/arch/auto/Sub/Uplevel/
              .exists
      ./.cpan/build/Sub-Uplevel-0.24-GduPEf/blib/man3/
        Sub::Uplevel.3pm
        .exists
于 2013-10-02T18:57:57.937 回答