Похоже, что у вас дома NFS, а файл находится в общем ресурсе NFS с поддержкой Kerberos, а это означает, что даже root не может читать что-либо в нем. Чтобы обойти это, как вы (не root ), скопируйте файл куда-нибудь, что не является NFS (, например /tmp ), а затем запустите его оттуда (или, если /tmp noexec, как только он появится, скопируйте его в другое место как root ).
Попробуйте это,
for dup in $(ls *.pdb | awk 'BEGIN{FS="_"}{if (++dup[$1] >= 2) print}')
do
rm -f $dup;
done
FS="_"
, чтобы сохранить подчеркивание в качестве разделителя полей. (++dup[$1] >= 2)
напечатает полное имя файла, если счетчик больше или равен 2, только эти входные данные будут переданы в цикл for
для удаления файла Вы можете выполнить это после перехода в нужный каталог. Он будет хранить первый файл в алфавитном порядке для каждого появления первых 3 букв.
printf "%s\n" ???_?.pdb | awk -F_ 'seen[$1]++' | xargs echo rm --
Снимите echo
после проверки. Вышеупомянутая команда awk
фильтрует только имена файлов, которые имеют одинаковые первые 3 буквы с предыдущим, поэтому она позволяет их удалить.