Я не уверен, как / почему это происходит. По сути, у меня есть команда, которая должна найти и очистить все файлы на рабочем столе, которые содержат определенный шаблон. Я делаю первую часть, используя:

find . -iregex '.*._.*'

Когда я запускаю это самостоятельно, вывод нормальный, т.е. он показывает все файлы, которые содержат этот шаблон. например:

./Graph/CMPT 215/makefiles/._makefile6
./Graph/CMPT 215/makefiles/._example3.cmds
./Graph/CMPT 215/makefiles/._makefile5
./Graph/CMPT 215/makefiles/._makefile1
./Graph/CMPT 215/makefiles/._makefile4
./Graph/CMPT 215/makefiles/._makefile2
./Graph/CMPT 215/makefiles/._makefile3
...

Однако я хочу удалить все эти файлы, поэтому после некоторого поиска в Google я придумал следующее:

rm -rf $(find . -iregex '.*._.*')

Но проблема в том, что когда я запускаю эту команду, я получаю следующий вывод:

rm: cannot remove â?~215/makefiles/._makefile6â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._example3.cmdsâ?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile5â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile1â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile4â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile2â?T: No such file or directory
rm: cannot remove â?~./Graph/CMPTâ?T: No such file or directory
rm: cannot remove â?~215/makefiles/._makefile3â?T: No such file or directory
...

Я посмотрел онлайн, и было предложено сбросить настройки терминала, набрав команду reset , но это не помогло. Что я могу сделать, чтобы убедиться, что вывод в rm правильный?

Если это помогает, я нахожусь в Windows и использую ssh для подключения к удаленной машине под управлением Linux Mageia и удаления некоторых файлов на машине

2 ответа2

1

Это должно работать: find . -iregex '.*._.*' -exec rm {} \; ,

Результаты команды find будут отправлены команде rm качестве аргумента, {} является заполнителем этого аргумента, \; завершить флаг -exec функции find.

Больше информации о команде поиска здесь.

0

Я думаю, что вы должны использовать команду xargs с find так:

find . -iregex '.*._.*' | xargs rm -rf

find соберет все ненужные файлы в одну строку, а xargs rm -rf удалит все пути к файлам из этой строки. Более эффективно использовать xargs с параметром find then -exec потому что он будет запускать rm -rf только в том случае, если у вас есть опция -exec .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .