Как мне найти и удалить все файлы, в том числе скрытые, без расширения java
. Я знаю, как использовать find для удаления файлов и запуска этой команды:
find . -not -name "*.java" -type f -delete
Это рекурсивно ищет в папках все файлы, которые не заканчиваются на * .java. Но команда пропускает файлы в скрытых папках.
Я запускаю команду, найденную здесь : ls -lahR
И я обнаружил, что команда, которую я запускал, пропустила файлы. Например:
./node_modules/.bin:
total 24
drwxr-xr-x 5 whitecat staff 170B Apr 5 12:47 .
drwxr-xr-x 4 whitecat staff 136B Apr 5 02:25 ..
lrwxr-xr-x 1 whitecat staff 19B Apr 5 12:47 nopt -> ../nopt/bin/nopt.js
lrwxr-xr-x 1 whitecat staff 20B Apr 5 12:47 semver -> ../semver/bin/semver
lrwxr-xr-x 1 whitecat staff 19B Apr 5 12:47 shjs -> ../shelljs/bin/shjs
Какие флаги мне нужны, чтобы не пропустить эти «скрытые» файлы. Я видел « Как просмотреть скрытые файлы с помощью команды Linux` find` », и это показывает только команду find / path -type f -iname« .java »-ls
. Я уже использовал эту команду, и она по-прежнему пропускает скрытые файлы.
С -типом f
вы ищете файлы.
Три файла, которые вы упомянули, являются символическими ссылками:
rwxr-xr-x 1 whitecat staff 19B 5 апр, 12:47 nopt -> ../nopt/bin/nopt.js
Чтобы найти ссылки, которые вам нужно найти для -типа l
Итак, чтобы удалить эти символические ссылки, вам придется изменить свою команду to (отредактировано с использованием комментария Whitecat ниже):
find . -not -name "*.java" -type f -delete -o -type l -delete