我有 3 种类型的文件,分别为*.pages
、*.key
和*.numbers
。
- 未损坏的文件:一切还好。
- 损坏文件类型 I:相应的程序可以显示文本,但是所有图像都丢失了。
- 损坏文件类型 II:相应的程序无法再打开该文件。
我想要创建两个.txt
文件,一个列出所有具有 I 型损坏的文件的路径,另一个列出所有具有 II 型损坏的文件的路径。
我想出了这个find
命令,它为我提供了一个文件类型-II.txtII 型损坏文件的完整路径:
find . \( -name "*.pages" -or -name "*.numbers" -or -name "*.key" \) -and -size 102c > type-II.txt
我想出了另一个find
命令,它为我提供了一个文件类型I和II.txt包含 I 类和 II 类损坏文件的完整路径
find . -type f -name "Properties.plist" > type-I-and-II.txt
在终端中使用什么命令来提供文件类型I.txt仅列出 I 类损坏文件的路径?
答案1
文件类型-II.txtlisting 是路径和文件名,例如./document.pages
。如果在类型I和II.txt列表它被列为./document.pages/Metadata/Properties.plist
。
使用此命令创建类型I.txt列出了文件类型I和II.txt未列出的类型-II.txt:
sed 's|/Metadata/Properties.plist$||' type-I-and-II.txt | sort - type-II.txt | uniq -u > type-I.txt
该sed
命令从文件名中删除“/Metadata/Properties.plist”类型I和II.txt列表。命令的输出sed
将传递给sort
命令。sort
命令将两个文件合并为一个排序列表。命令uniq
仅选择排序列表中出现一次的文件,即类型I和II.txt但不是在类型-II.txt。