从文件夹及其子文件夹中获取损坏文件的列表

拉胡尔

我有以下目录结构

folder
└── 01
    ├── test1
        └── abc.bz2
        └── asd.bz2
    ├── test2
        └── 546.bz2
        └── alsj.bz2
    ├── test3
        └── aewr.bz2
        └── hlk.bz2
    └── test4
        └── oiqw.bz2
        └── abc.bz2
└── 02
    ├── test1
    ├── test2
    ├── test3
    └── test4
└── 03
    ├── test1
    ├── test2
    ├── test3
    └── test4
.
.
└── 31

所有test1..4目录都包含大量从远程服务器复制的bzip文件。我知道bzip2 -t <filename.bz2>用于检查文件是否已损坏的命令,但是我需要从上述文件夹结构中检查所有损坏的文件。那么,如何编写shell脚本来获取所有损坏文件的列表呢?我是Shell脚本和Linux的新手,所以可以提供任何帮助。

芒登

只要使用find具有-exec

find . -name '*bz2' -exec sh -c 'bzip2 -t "$0" 2>/dev/null || echo "$0 is corrupted"' {} \;

来自man find

  -exec command ;
          Execute  command;  true  if 0 status is returned.  All following
          arguments to find are taken to be arguments to the command until
          an  argument  consisting of `;' is encountered.  The string `{}'
          is replaced by the current file name being processed  everywhere
          it occurs in the arguments to the command [...]

因此,find上面命令将查找所有以结尾的文件bz2,并sh在每个文件上启动一个小脚本。{}被发现的每个文件名替换。该参数作为第一个参数($0传递shbzip -t在其上运行脚本,并脚本失败时进行投诉。2>/dev/null放弃所有其他错误消息,以保持干净的东西。


或者,您可以使用外壳。如果您使用bash,请启用该globstar选项以使**递归进入子目录并检查每个bzip文件:

shopt -s globstar
for file in folder/**/*bz; do bzip2 -t "$file" || echo "$file is corrupted"; done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Webpack JavaScript中的文件夹,子文件夹及其子文件夹动态获取文件

Windows 中文件夹及其子文件夹中的所有文件的列表

从文件夹和子文件夹中获取文件列表 Excel VBA

获取文件夹和子文件夹中的列表文件

从JRuby中的给定文件夹获取子文件夹列表

在 Python 中浏览和合并文件夹及其子文件夹中的 Excel 文件

从文件,文件夹及其子文件夹中删除前导空格

更改文件夹及其子文件夹中每个.txt文件的编码

Gulp-定位文件夹及其子文件夹中的所有文件

使用Swift的FileManager遍历文件夹及其子文件夹中的文件

如何最好地删除文件夹及其子文件夹中的所有文件

从文件夹及其子文件夹中查找特定的文件类型

删除文件夹及其子文件夹中超过7天的文件

删除文件夹及其子文件夹中的所有文件

获取网络文件夹列表及其路径

如何删除文件夹及其子文件夹中的符号链接?

访问获取共享文件夹的子文件夹

如何获取没有文件的文件夹和子文件夹的列表?

如何获取不包含特定类型文件的文件夹/子文件夹列表

获取公共Dropbox文件夹中的文件和文件夹列表并下载文件

从资产文件夹获取文件夹列表

遍历文件夹和子文件夹中的所有文件并获取创建日期

获取文件夹和子文件夹中的所有文件

如何遍历文件夹并从分组的子文件夹中获取某些文件?

如何从Java Resources文件夹中的文件夹获取所有文件的列表

Outlook:将文件夹拖到子文件夹中,文件夹列表会跳回

删除损坏的文件夹

将文件夹及其子文件夹中的所有文件名写入CSV文件的脚本

批处理脚本以在子文件夹中查找文件夹并获取文件夹路径