
У меня есть 3 типа файлов типа *.pages
, *.key
и *.numbers
.
- Неповрежденные файлы:все в порядке.
- Поврежденные файлы типа I:Где соответствующая программа может отображать текст, но все изображения теряются.
- Поврежденные файлы типа II:Где соответствующая программа больше не может открыть файлы.
Я хотел бы создать два .txt
файла: один с перечнем путей ко всем файлам с повреждениями типа I, а другой с перечнем путей ко всем файлам с повреждениями типа II.
Я придумал эту find
команду, которая предоставляет мне файлтип-II.txtс полным путем к файлам с повреждением типа II:
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.txtсписок — это путь и имя файла, например, ./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.txtlisting. Вывод команды sed
передается команде sort
. sort
Команда объединяет оба файла в отсортированный список. Команда uniq
выбирает только те файлы, которые встречаются один раз в отсортированном списке, то есть файлы, перечисленные втип-I-и-II.txtно не втип-II.txt.