我想知道 - 我如何移动目录中的所有文件,除了特定目录中的那些文件(因为'mv'没有'--exclude'选项)?
Cha*_*ghe 71
让我们假设dir结构是这样的,
|parent
|--child1
|--child2
|--grandChild1
|--grandChild2
|--grandChild3
|--grandChild4
|--grandChild5
|--grandChild6
Run Code Online (Sandbox Code Playgroud)
我们需要移动文件,看起来像,
|parent
|--child1
| |--grandChild1
| |--grandChild2
| |--grandChild3
| |--grandChild4
| |--grandChild5
| |--grandChild6
|--child2
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你需要排除两个目录child1
和child2
,并在移动的目录其余child1
目录.
使用,
mv !(child1|child2) child1
Run Code Online (Sandbox Code Playgroud)
这会将所有其余目录移动到child1
目录中.
由于 find 确实有排除选项,因此使用 find + xargs + mv:
find /source/directory -name ignore-directory-name -prune -print0 | xargs -0 mv --target-directory=/target/directory
Run Code Online (Sandbox Code Playgroud)
请注意,这几乎是从 find 手册页复制的(我认为使用 mv --target-directory 比 cpio 更好)。
小智 5
首先获取文件和文件夹的名称并排除您想要的任何内容:
ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...
Run Code Online (Sandbox Code Playgroud)
然后将过滤后的名称作为mv
第一个参数传递,第二个参数将是目标:
mv $(ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...) destination/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67234 次 |
最近记录: |