仅复制包含文件的文件夹的命令

仅复制包含文件的文件夹的命令

我有这种类型的文件夹

folder A
  |
  -folder A
     |
     - 3files

folder B
  |
  -folder B
     |
     - no files

https://i.stack.imgur.com/HKZvT.png

子文件夹 A 和 B 与父文件夹 A 或 B 同名。父文件夹位于同一目录中
我只想复制包含文件的子文件夹到另一个目录

我在 Ubuntu 14 中可以使用什么命令?

答案1

请注意,这还会复制仅包含文件夹的文件夹,而不仅仅是包含至少一个文件的文件夹。不确定这是否正是您要找的;无论如何,我会留下这个,以防它对其他人有用。

使用find

find source -mindepth 2 -maxdepth 2 -type d -not -empty -exec mv {} target \;
  • source: 搜索范围source/
  • -mindepth 2:从指定目录层次的第二级开始搜索
  • -maxdepth 2:搜索在指定目录层次结构的第二级停止
  • -type d:仅搜索目录
  • -not:否定以下条件/动作
  • -empty:仅搜索空文件夹
  • -exec [...]:对于每个结果,执行以下命令
  • mv {} target \;:将每个结果移动到target/
user@debian ~/tmp % tree
.
├── source
│   ├── folder A
│   │   └── folder A
│   │       ├── file1
│   │       ├── file2
│   │       └── file3
│   └── folder B
│       └── folder B
└── target

6 directories, 3 files
user@debian ~/tmp % find source -mindepth 2 -maxdepth 2 -type d -not -empty -exec mv {} target \; 
user@debian ~/tmp % tree
.
├── source
│   ├── folder A
│   └── folder B
│       └── folder B
└── target
    └── folder A
        ├── file1
        ├── file2
        └── file3

6 directories, 3 files

答案2

尝试这个:

cp -r /folderA/folderA /newdestination/

命令cp复制文件或目录,后面跟着-r,它会递归复制目标中的子目录。请注意路径后的斜线或缺失斜线。有关复制的更多信息这里

相关内容