У меня есть следующая конфигурация файлов и каталогов:
-Parent_dir
|-delme_dir
|-delme_file
|-aFile
|-sub_dir
|-delme_dir
|-delme_file
|-aFile
|-sub_dir
|-delme_dir
|-delme_file
|-aFile
|-sub_dir2
|-delme_dir
|-delme_file
|-aFile
Есть ли команда, которую я могу использовать из Parent_dir, чтобы рекурсивно удалить все каталоги delme_dir и файлы delme_file ?
В одиночной команде вы можете сделать это:
find . \( -type d -name "delme_dir" -o -type f -name "delme_file" \) -delete
Если нет других каталогов или файлов, соответствующих шаблону delme_*, вы можете сделать это коротко.
find . -name "delme_*" -delete
В одиночной команде вы можете сделать это:
find . \( -type d -name "delme_dir" -o -type f -name "delme_file" \) -delete
Если нет других каталогов или файлов, соответствующих шаблону delme_*, вы можете сделать это коротко.
find . -name "delme_*" -delete
В одиночной команде вы можете сделать это:
find . \( -type d -name "delme_dir" -o -type f -name "delme_file" \) -delete
Если нет других каталогов или файлов, соответствующих шаблону delme_*, вы можете сделать это коротко.
find . -name "delme_*" -delete
Вы можете комбинировать find, xargs и rm:
find . -type f -a -name delme_files -print0 | xargs -0 rm
и
find . -type d -a -name delme_dir -print0 | xargs -0 rmdir
(когда вы находитесь в каталоге Parent_dir)
Возможно, есть способ объединить два find только в одном, но я все равно так понят.
Команды find найдут каталоги / файлы с именем в вашем примере, и вы передаете результаты в xargs, которые будут выполнять rm (удалить) / rmdir (удалить каталог) в каждом из файлов, найти «вверх по течению», то есть из команды file. [ ! d4]
Если каталоги не пусты, замените rmdir на rm -Rf, но это приведет к удалению рекурсивно всех файлов в каталогах, найденных командой find.
Комбо -print0 / -0, убедитесь, что все файлы / каталоги будут обработаны правильно, даже те, у которых есть пробелы в их именах (возможно, не нужны здесь, но лучше использовать в общих случаях).
Убедитесь, что вы проверили вещи до не важных данных и всегда иметь резервные копии.
Вы можете комбинировать find, xargs и rm:
find . -type f -a -name delme_files -print0 | xargs -0 rm
и
find . -type d -a -name delme_dir -print0 | xargs -0 rmdir
(когда вы находитесь в каталоге Parent_dir)
Возможно, есть способ объединить два find только в одном, но я все равно так понят.
Команды find найдут каталоги / файлы с именем в вашем примере, и вы передаете результаты в xargs, которые будут выполнять rm (удалить) / rmdir (удалить каталог) в каждом из файлов, найти «вверх по течению», то есть из команды file. [ ! d4]
Если каталоги не пусты, замените rmdir на rm -Rf, но это приведет к удалению рекурсивно всех файлов в каталогах, найденных командой find.
Комбо -print0 / -0, убедитесь, что все файлы / каталоги будут обработаны правильно, даже те, у которых есть пробелы в их именах (возможно, не нужны здесь, но лучше использовать в общих случаях).
Убедитесь, что вы проверили вещи до не важных данных и всегда иметь резервные копии.
Вы можете комбинировать find, xargs и rm:
find . -type f -a -name delme_files -print0 | xargs -0 rm
и
find . -type d -a -name delme_dir -print0 | xargs -0 rmdir
(когда вы находитесь в каталоге Parent_dir)
Возможно, есть способ объединить два find только в одном, но я все равно так понят.
Команды find найдут каталоги / файлы с именем в вашем примере, и вы передаете результаты в xargs, которые будут выполнять rm (удалить) / rmdir (удалить каталог) в каждом из файлов, найти «вверх по течению», то есть из команды file. [ ! d4]
Если каталоги не пусты, замените rmdir на rm -Rf, но это приведет к удалению рекурсивно всех файлов в каталогах, найденных командой find.
Комбо -print0 / -0, убедитесь, что все файлы / каталоги будут обработаны правильно, даже те, у которых есть пробелы в их именах (возможно, не нужны здесь, но лучше использовать в общих случаях).
Убедитесь, что вы проверили вещи до не важных данных и всегда иметь резервные копии.