Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Стереть содержимое всех текстовых файлов в папке

#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 Вот это попробуй сделать, может поможет.

Комментариев нет:

Отправить комментарий