Как я могу удалить все файлы, используя сопоставление с образцом и рекурсивно через каталоги

Так и должно быть:

! cat /data/files/*.txt >> mergedfile.txt && wc -l /data/files/mergedfile.txt

Ваши команды состоят из двух команд -первый — cat, который выводит в текстовый файл путем перенаправления -второй — вычислить длину результирующего файла

Эти две команды должны выполняться последовательно при условии, что первая успешно выполнена. Итак, вы используете &&для цепочки. После перенаправления stdoutиз catна mergedfile.txtкоманда catне создает stdoutдля трубопровода на wc. Поэтому использовать |неправильно.

В качестве альтернативы вы можете:

! cat /data/files/*.txt | wc -l

, который является более кратким и позволяет избежать использования временного файла. Здесь вывод catотправляется в wcдля непосредственного подсчета.

Обратите внимание , первый подход с использованием временного файла имеет много недостатков:

  • вам нужно очистить файл mergedfile.txtперед его выполнением. Если вы начали без этого файла в своем рабочем каталоге, это нормально. Но очень часто вы пробовали некоторые команды (, например не ту, которую вы использовали сначала ), а затем забывали очистить временный файл и запустить правильную команду. Это все равно приведет к неправильному ответу. Действительно, если все строки находятся в /data/files/*.txt, вы можете просто использовать >вместо >>. Сначала он очистит файл.
  • Во время выполнения команды временный файл может быть изменен другими пользователями или вами, когда вы хотите сделать что-то параллельно.

Кроме того :, если вам нужно mergedfile.txtдля последующего использования, вы можете использовать tee, чтобы сделать копию вывода:

! cat /data/files/*.txt | tee mergedfile.txt | wc -l

где teeпомещает свой stdinв mergedfile.txtи дублирует его в stdout.

0
03.12.2019, 19:58
1 ответ

Прочитать man find.

Что-то вроде:

find. -type f -name '*.999.jpg' -delete

поможет.

При первой работе с таким использованием findопустите -delete, поэтому findпросто перечислит найденные файлы.

1
28.01.2020, 02:38

Теги

Похожие вопросы