Как я могу объединить "SRM" и "Найти"?

Я использую SRM для безопасного удаления файлов и каталогов. Большая часть данных находится на томах FAT и NTFS, поскольку я выполняю двойную загрузку с Windows (я стараюсь максимально использовать Ubuntu и держаться подальше от Windows).

Однако время от времени я сталкиваюсь с ошибкой Error: File <filepath> - file is hardlinked 1 time(s), skipping! что я обнаружил, значит, есть жесткая ссылка на файл.

Я провел поиск и обнаружил, что NON-SRM способ удалить все связанные файлы с помощью команды (пример:) $ sudo find ~ -xdev -samefile '/home/USERNAME/Desktop/hardlinks (copy).txt' | xargs rm

К сожалению, вышеперечисленное не работает, если я заменю "RM" на "SRM"...

Error: File /home/USERNAME/Desktop/hardlinks - No such file or directory
Error: File (copy).txt - No such file or directory
Error: File /home/USERNAME/Desktop/links.txt - file is hardlinked 1 time(s), skipping!

введите описание здесь

Есть ли способ достичь того же результата: найти жесткие ссылки для определенного файла, а затем обработать их через SRM? Желательно с аргументами -rvz (рекурсивный, подробный, перезаписать с нуля)?

примечание: я также пытался добавить -print0 НАЙТИ и / или -0 к XARGS, который не помог

1 ответ

Это выглядит для меня как общая проблема при работе с файлами в списке... здесь список создается с конкретными аргументами find (чтобы найти связанные / двойные файлы).

Я бы пропустил агонию прямого xargs использование на любых файлах, которые ваш find случается придумать...

Вместо этого я бы создал команды с find -printf, и проверьте, что произведено полностью, и затем направьте это в bash с добавленной

 | bash

И помните, что имена файлов могут содержать специальные символы; Простое ПРОСТРАНСТВО - источник проблем. Так что для начала приведите имена всегда.

Пример с ограниченным набором файлов (-maxdepth):

find -maxdepth 1 -type f -printf 'file="%p"; echo $file ; rm "$file" \n'

... это начало, чтобы разобраться с тем, что я имею в виду выше... и когда вы закончите, когда результат будет именно тем, что вы на самом деле ожидаете - тогда переходите к

find -maxdepth 1 -type f -printf 'file="%p"; echo $file ; rm "$file" \n' | bash

echo "echo 'test'" | bash 

распечатает test, сложный способ для простого эха, но может показать идею позади того, что выше.

Другие вопросы по тегам