Удалить определенные файлы

Похоже, что у вас дома NFS, а файл находится в общем ресурсе NFS с поддержкой Kerberos, а это означает, что даже root не может читать что-либо в нем. Чтобы обойти это, как вы (не root ), скопируйте файл куда-нибудь, что не является NFS (, например /tmp ), а затем запустите его оттуда (или, если /tmp noexec, как только он появится, скопируйте его в другое место как root ).

-1
28.10.2020, 16:03
2 ответа

Попробуйте это,

for dup in $(ls  *.pdb | awk 'BEGIN{FS="_"}{if (++dup[$1] >= 2) print}')
do
   rm -f $dup; 
done
  • FS="_", чтобы сохранить подчеркивание в качестве разделителя полей.
  • (++dup[$1] >= 2)напечатает полное имя файла, если счетчик больше или равен 2, только эти входные данные будут переданы в цикл forдля удаления файла
1
18.03.2021, 22:54

Вы можете выполнить это после перехода в нужный каталог. Он будет хранить первый файл в алфавитном порядке для каждого появления первых 3 букв.

printf "%s\n" ???_?.pdb | awk -F_ 'seen[$1]++' | xargs echo rm --

Снимите echoпосле проверки. Вышеупомянутая команда awkфильтрует только имена файлов, которые имеют одинаковые первые 3 буквы с предыдущим, поэтому она позволяет их удалить.

1
18.03.2021, 22:54

Теги

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