2

Я могу найти список файлов, используя что-то вроде:

find /path/to/files -type f

И я могу очистить содержимое одного файла с любым из:

> filename

echo -n > filename

cat /dev/null > filename

Вы можете сделать что-то подобное с командами, которые не включают перенаправление вывода:

find /path/to/files -type f -exec file '{}' \;

Однако это не работает:

find /path/to/files -type f -exec echo -n > '{}' \;

Я не могу создать команду, используя find -exec или | xargs для передачи списка файлов в одну из этих команд, которая очистит файлы. Как я могу это сделать?

2 ответа2

4

Просто для удовольствия, вот еще один вариант:

find /path/to/files -type f -exec dd if=/dev/null of={} \;
3

find /path/to/files -type f -exec /bin/sh -c "> '{}'" ';' должен делать то, что вы хотите; смотрите find(1) для деталей о том, как exec работает подробно, но этот вызов запускает команду один раз, помещая имя файла, где {} .

Вы также можете указать xargs передавать только одно имя файла команде или использовать find /path -type f | while read file; do echo -n > "$file"; done чтобы сделать это на уровне оболочки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .