linux - 如何对目录中的所有文件运行命令,并将 mv 运行到获得包含 'Cannot read TIFF header' 输出的不同文件?

标签 linux bash shell command-line awk

我想从一个非常大的目录中删除所有坏的 tiff。命令行工具“tiffinfo”可以轻松识别它们:

tiffinfo -D *

这将有这样的输出:

00074000/74986.TIF: Cannot read TIFF header.

如果 tiff 文件已损坏。如果发生这种情况,我想获取文件并将其移动到不同的目录:bad_images。我尝试在这上面使用 awk,但到目前为止还没有奏效...... 谢谢!

最佳答案

假设“无法读取 TIFF header ”错误出现在标准错误上,并假设 tiffinfo 在标准输出上输出您不想要的其他数据,那么:

cd /path/to/tiffs
for file in `tiffinfo -D * 2>&1 >/dev/null | cut -f1 -d:`
do
    echo mv $file /path/to/bad_images
done

删除 echo 以实际移动文件,一旦满意脚本将按预期工作。

关于linux - 如何对目录中的所有文件运行命令,并将 mv 运行到获得包含 'Cannot read TIFF header' 输出的不同文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31834657/

相关文章:

linux - Bash 中的 MySQL 备份脚本

c++ - OpenGL ES 2 如何渲染到纹理和提取数据用于 GPGPU 测试

linux - 我可以在没有预先存在的源文件的情况下创建包吗?

linux查找命令: exclude path from result

bash - 将一个文件的第一列与第二个文件的第一列进行比较,如果匹配则打印每个文件的相关列

linux - 排序管道会删除文件

linux - 无法从同一 LAN 上的 Linux 计算机 ping Windows 7 计算机

bash - Bash 中的 while 循环子 shell 困境

Shell脚本多行注释

bash - 如何测试给定路径是否为挂载点