Как я могу объединить «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

К сожалению, вышеприведенное не сработает, если я заменю » РМ "с" СРМ "...

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!

enter image description here

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

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

2
задан 10 April 2017 в 00:14

1 ответ

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

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

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

 | 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, сложный путь к простому эху, но может показать идею позади того, что выше.

1
ответ дан 10 April 2017 в 00:14

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

Похожие вопросы: