Назад | Перейти на главную страницу

Как использовать find для удаления скрытых файлов и папок

Как найти и удалить все файлы, в том числе скрытые, без расширения 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