Я использую 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!
Есть ли способ достичь того же результата: найти жесткие ссылки для определенного файла, а затем обработать их с помощью SRM ? Предпочтительно с аргументами -rvz (рекурсивный, подробный, перезаписать с нуля)?
примечание: Я также пытался добавить -print0
к НАЙТИ и / или -0
к XARGS, которые не помогли
Это смотрит на меня как на общую проблему с выполнением вещей с файлами в списке... здесь список создается с определенными аргументами 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
, сложный путь к простому эху, но может показать идею позади того, что выше.