som*_*ing 8 command-line directory files move
我有一个文件夹,A
其中有文件和目录,我想所有的文件和目录移动到另一个文件夹B
,除非file
,file2
,directory
,和directory2
。
如何才能做到这一点?
Sté*_*las 11
与zsh
:
setopt extendedglob # best in ~/.zshrc
mv A/^(file|directory)(|2)(D) B/
Run Code Online (Sandbox Code Playgroud)
((D)
包含点(隐藏)文件)。
与bash
:
shopt -s extglob dotglob failglob
mv A/!(@(file|directory)?(2)) B/
Run Code Online (Sandbox Code Playgroud)
和 ksh93
(FIGNORE='@(.|..|@(file|directory)?(2))'; mv A/* B)
Run Code Online (Sandbox Code Playgroud)
Arc*_*mar 10
我通常做什么
cd A
ls > a
Run Code Online (Sandbox Code Playgroud)
(假设您没有“a”文件)。
vi a
Run Code Online (Sandbox Code Playgroud)
删除要保留的任何文件或目录。
mv $(<a) B
Run Code Online (Sandbox Code Playgroud)
您可以使用find
排除的表达式:
find . ! -name . -prune ! -path ./file \
! -path ./file2 \
! -path ./directory \
! -path ./directory2 \
-exec mv {} your_destination \;
Run Code Online (Sandbox Code Playgroud)
这个解决方案的灵感来自这个问题。