Я хочу удалить все подкаталоги и файлы из каталога, но не сам каталог. Например, если я передам каталог «Образец» в переменной, а каталог «Образец» содержит три подкаталога и 3 файла, я хочу удалить все эти 3 каталога и 3 файла. На практике каталог «Образец» может содержать множество подкаталогов и файлов.
Удаление подкаталогов и файлов в заданном каталоге
Ответы (1)
ETA: На самом деле это в perlfaq5: Как удалить дерево каталогов?
Используйте File::Path, основной модуль.
perl -MFile::Path=remove_tree -we
'remove_tree("Sample",{keep_root=>1}) or die $!'
Опция keep_root заставит remove_tree сохранить верхний каталог:
keep_root => $bool
When set to a true value, will cause all files and subdirectories to be removed, except the initially specified directories. This comes in handy when cleaning out an application's scratch directory.
person
TLP
schedule
17.03.2012
+1 Функция
rmdir удаляет только подкаталоги, внутри которых нет файлов, для удаления подкаталогов, содержащих файлы внутри, нужен модуль File::Path
- person ; 17.03.2012
Большое спасибо, ребята, за ваши ценные комментарии. @TLP люблю тебя!!! Я немного модифицировал код, но все равно он отлично работает use File::Path qw{remove_tree}; remove_tree(C:/FFFF2,{keep_root=›1}) или умри $!
- person Shaggy; 18.03.2012
find. Это намного проще, как один лайнер. - person Jasonw   schedule 17.03.2012