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

В моем случае я разобрался.

вроде @fra -Сан сказал, зачем использовать прецедент, а не просто распечатать его и спросить у пользователей.

Я только что использовал массив для отображения всех IP-адресов с дополнительным числом впереди, и когда они вводят число, оно соответствует числу в переменной, поэтому у меня есть ответ.

0
26.05.2020, 07:29
2 ответа
find. -path./upld -prune -o ! -path. -print

Это будет использовать findдля удаления всего из текущего каталога, включая подкаталоги. Однако путь ./upldне удаляется (обратите внимание, что это должен быть полный относительный путь объекта, который вы хотите пропустить, из исходного пути поиска ).

Запустите это и проверьте вывод, затем замените -printна -delete.


Безопасный вариант из родительского каталога, о котором идет речь:

mkdir newdir
mv olddir/upld newdir
rm -rf olddir
mv newdir olddir

То есть переместите подкаталог upldв сторону для безопасного -сохранения, а затем полностью удалите старый каталог.

1
18.03.2021, 23:32

Предполагая, что вы используете bash, по крайней мере, так. Я рекомендую вам сначала поиграть с lsили echo, а когда вы будете довольны результатами, попробовать rm.

1 укажите, что вы хотите удалить, например:

ls -d [_a-s]*

2 укажите, что вы хотите сохранить, например:

shopt -s extglob # just once per session
ls -d !(upld)

Вы можете найти больше информации о сопоставлении шаблонов bash здесь .

0
18.03.2021, 23:32

Теги

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