Очистить определенную папку в каждом подкаталоге

Да, должно быть.

Попробуйте Mod + Ctrl + j для перехода к следующему экрану.

Затем Mod + Ctrl + k должен сфокусироваться на предыдущем экране.

1
03.10.2019, 16:00
2 ответа

Вы можете использовать

rm -fr */folder_I_want_to_empty/* */folder_I_want_to_empty/.??*

Обратите внимание, что эта команда очень деструктивна и не запрашивает, а вместо этого безжалостно удаляет не -в интерактивном режиме.

Если вы хотите увидеть, что будет удалено, замените rm -frнаls -ld:

ls -ld */folder_I_want_to_empty/* */folder_I_want_to_empty/.??*

Мелкий шрифт :Из-за использованного выше шаблона очень мала вероятность того, что файлы или папки, содержащие только два символа, первым из которых является точка ., не будут удалены. Если это проблема для вас, сообщите нам об этом в комментарии, и я изменю шаблон.

0
28.01.2020, 00:00

Вот как бы я это сделал. для моего примера я создал каталог /test для тестирования.

find /test -type d -iname folder_I_want_to_empty -print0 | xargs -0 -I % find % -type f -print -delete

Во-первых, я findкаталоги(-type d)назвал folder_I_want_to_empty. Затем для каждого из них я запускаю xargs для поиска файлов в этом каталоге, печатаю их имена и удаляю их. Это не удаляет подкаталоги в folder_I_want_to_empty, но это можно сделать; в вашем примере их нет.

Вот пример dockerfile, чтобы читатели могли его воспроизвести:

FROM debian
RUN mkdir -p /test
WORKDIR /test
RUN mkdir -p subdir1/folder_I_want_to_empty subdir2/folder_I_want_to_empty subdir1/folder_I_do_not_want_to_empty subdir2/folder_I_do_not_want_to_empty && \
    find /test -mindepth 2 -maxdepth 2 -type d -print0 | xargs -0 -I % touch %/test1 %/test2
ENTRYPOINT [ "/bin/sh" ]
CMD [ "-c", "find /test -type d -iname folder_I_want_to_empty -print0 | xargs -0 -I % find % -type f -print -delete; find /test -type f" ]
0
28.01.2020, 00:00

Теги

Похожие вопросы