Я видел во многих местах (например, здесь , здесь или здесь ), где люди предлагают использовать
Get-ChildItem -Path "Some path" -Recurse | Remove-Item
для рекурсивного удаления каталога, но с какой стати это работает?
Когда я запускаю Get-ChildItem -Path "foo" -Recurse | % { "$_" }
, я вижу, что каталоги были перечислены вначале, а затем - файлы.Он показывает что-то вроде этого:
1st_child_directory
2st_child_directory
...
1st_file_in_foo
2nd_file_in_foo
...
1st_file_in_1st_child_directory
2st_file_in_1st_child_directory
...
1st_file_in_2st_child_directory
...
и т. Д.
Если они будут переданы в Remove-Item
в том же порядке, то Remove-Item
сначала удалит каталоги (которые все ещене пустые), а затем удаляют файлы внутри каталогов (но каталоги уже должны быть удалены), и это немного нелогично ... Так почему бы Get-ChildItem -Recurse | Remove-Item
работать и как это работает?