批量删除多个父文件夹中的子文件夹

时间:2017-12-12 12:05:57

标签: linux bash batch-processing

在linux中,我有一组文件夹,它们都包含相同的子文件夹结构。 E.g。

FolderA / X / Y / Z / FILE1.TXT

FolderA / X / Y / Z / FILE2.TXT

FolderB中/ X / Y / Z / FILE1.TXT

FolderC / X / Y / Z / FILE1.TXT

我想运行批处理来删除其中一个子文件夹,但保留所有文件和文件夹不变。例如。如果我要删除文件夹" y":

FolderA / X / Z / FILE1.TXT

FolderA / X / Z / FILE2.TXT

FolderB中/ X / Z / FILE1.TXT

FolderC / X / Z / FILE1.TXT

我已尝试将find和mv的某些组合放在一起,但无法正确使用

2 个答案:

答案 0 :(得分:1)

find . -name y -type d -exec sh -c '
  for d; do echo mv "$d"/* "$d"/..; echo rmdir "$d"; done' _ {} +

如果结果与您期望的结果相符,请删除echo

答案 1 :(得分:0)

考虑到您要删除其中一个子文件夹,但保留所有文件和文件夹不变,这是您可以执行的操作。它不是一个精确的解决方案,可能适合你的一些技巧。我在电脑上做了很多次。

您可以递归地将子文件夹的内容复制到它的父文件夹,然后遍历到父目录,最后递归删除子文件夹。

  1. 遍历子文件夹
      

    $ cd path / to / SubFolder

  2. 递归复制所有内容到父文件夹
      

    $ cp -R * ..

  3. 遍历父文件夹
      

    $ cd ..

  4. 以递归方式删除子文件夹
      

    $ rm -rf SubFolder /

  5. 假设你有一个文件夹y,那么,

    
        $ cd path/to/folder/y
        $ cp -R * ..
        $ cd ..
        $ rm -rf y/
    
    

    运行批处理您可以使用find命令找出子文件夹的路径。

    请注意,这个技巧可能会耗费大量时间。资源,如果文件夹中有很多文件夹。但那确实有用!