Что-то, что я чувствую, я должен знать наверняка: если я ls <something>
, rm <something>
удаляю точно те же файлы, которые ls
отображались? Есть ли обстоятельства, при которых rm
можно было бы удалить файлы, которые ls
не отображались? (Это в 18.04 Bash)
Редактировать: спасибо всем, кто ответил. Я думаю, что полный ответ представляет собой комбинацию всех ответов, поэтому я принял ответ с наибольшим количеством голосов как «ответ».
Неожиданные вещи, которые я узнал по пути:
ls
не так просто, как вы могли бы подумать, обрабатывая свои аргументы- В простой и беспроблемной установке Ubuntu псевдонимы .bashrc
ls
- Не называйте ваши файлы, начинающиеся с дефиса, так как они могут выглядеть как аргументы команды, а имя один -r запрашивает это!
find -delete
лучше, чем rm
? Вы говорите: «Вот почему» , но мне совершенно непонятно, к чему это относится. Также обратите внимание, что ваш find
вызов рекурсивно удалит все файлы в текущем каталоге, где rm
просто удалит файлы в непосредственном каталоге. Также -name *
нет оп. В общем, я весьма озадачен вашим советом ...
find
, потому что вы можете запустить его, просмотреть все файлы, а затем выполнить ту же команду с -delete
. Поскольку вы уже видели результаты find
, не должно быть никакой двусмысленности относительно того, что будет удалено (на самом деле я хотел бы услышать больше подробностей об этом в форме ответа)
-delete
" - Но как это лучше, чем запустить ls <filespec>
, а затем rm <filespec>
(что ОП уже знает, как это сделать)?
find ... -print
сначала запустите, чтобы подтвердить, какие файлы будут удалены, а затем find ... -delete
вы все равно удалите файлы, созданные между двумя командами. Если вы используете и то, -print
и другое -delete
, вы не получите подтверждение, а просто отчет о том, что было удалено (и вы можете также использовать rm -v
).
rm
нет--dry-run
флага ...