Что-то, что я чувствую, я должен знать наверняка: если я 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флага ...