Как найти и удалить все файлы, в том числе скрытые, без расширения 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
. Я уже использовал эту команду, и она по-прежнему пропускает скрытые файлы.
С участием -type f
вы ищете файлы.
Три файла, которые вы упомянули, являются символическими ссылками:
rwxr-xr-x 1 whitecat staff 19B Apr 5 12:47 nopt -> ../nopt/bin/nopt.js
Чтобы найти ссылки, вам нужно найти -type l
Итак, чтобы удалить эти символические ссылки, вам нужно будет изменить свою команду на (отредактировано с вводом комментария Whitecat ниже):
find . -not -name "*.java" -type f -delete -o -type l -delete