#linux
не могу стереть содержимое всех текстовых файлов в папке. испробовал разные способы, не получается Пытался использовать cp /dev/null * писало ошибку
Ответы
Ответ 1
что бы "стереть содержимое файлов", можно просто обрезать их размер до нуля. Для этого есть команда truncate --size 0 <имяфайла>. Найти все файлы к каталоге (рекурсивно) можно такой командой find . -type f (где точка - текущий каталог). Соединяем. Вначале запускаем find . -type f и смотрим на список файлов, что он соответствует требуемому. Если все ок, запускаем такое find . -type f -exec truncate --size 0 {} \;Ответ 2
команда $ cp /dev/null файл запишет в файл (в самое начало) строку нулевой длины, тем самым как бы «сотрёт» содержимое файла. аналогичное действие произведёт и такая, например, команда: $ cat /dev/null > файл или такая: $ : > файл или такая: $ truncate -s 0 файл а чтобы произвести это действие со всеми файлами в текущем каталоге (и подкаталогах), можно, например, воспользоваться программой find: $ find -type f -exec truncate -s 0 {} \; это если использовать вариант без перенаправления ввода/вывода (проще говоря — без >). если же требуется использовать перенаправление, придётся вызывать интерпретатор оболочки. с приведёнными выше вариантами: $ find -type f -exec sh -c 'cp /dev/null > {}' \; $ find -type f -exec sh -c 'cat /dev/null > {}' \; $ find -type f -exec sh -c ': > {}' \; по поводу текстовых файлов если требуется определить именно текстовый файл (на основе его содержимого), то, как советуют, например, здесь, можно использовать опцию -I программы grep. тогда в команду (например): $ find -type f -exec truncate -s 0 {} \; надо добавить вызов программы grep: $ find -type f -exec grep -Iq . {} \; -and -exec truncate -s 0 {} \; аналогично и для других примеров.Ответ 3
Есть ещё полезная программа shred Переписывает несколько раз указанные файлы для того, чтобы сделать более сложным восстановление даже с использованием очень дорогого оборудования. Пример использования: $ shred -n5 -z /dir_for_shred/* Команда shred с ключом -n перезаписывает 5 раз все файлы в директории dir_for_shred и с ключом -z перезаписывает в конце нулями, чтобы скрыть измельчение. Более подробная информация в man shred или shred --helpОтвет 4
cp /dev/null file.txt Вот это попробуй сделать, может поможет.
Комментариев нет:
Отправить комментарий