Моя цель - очистить каждый файл в каталоге. Я НЕ хочу фактически удалить файл, я просто хочу удалить его содержимое.Лучший способ использования символа перенаправления в сочетании с find -exec
Если вы хотите сделать это с помощью одного файла, который вы можете сделать > file.txt
Если я хочу, чтобы запустить эту операцию на каждый файл в каталоге, я могу это сделать:
find . -exec /bin/bash -c '> {}' \;
Обратите внимание, как выше команда должна вызвать /bin/bash
. Это потому, что просто запускать такую команду, find . -exec > {} \;
говорит find: invalid argument ;' to -exec'
Я подозреваю, что это связано с тем, что символ перенаправления вводит в заблуждение команду.
Я хотел бы запустить эту команду без необходимости запуска /bin/bash
в пределах -exec
Как это может быть сделано?
Ницца. Первый идеальный. Что делает '-s0'? Я не мог найти никакой информации об этом. – noobcoder
'-s0' означает: обрезать файл до 0 байтов. – redneb
Забавно, что решение, которое вам не нравится, более идиоматично (и переносимо), чем 'find'-with-'-print0'. –