Linux
如何有選擇地將文件從一個目錄複製到另一個目錄?
在 Linux 上,我如何選擇性地將大多數(但不是全部)文件從目錄 (
dir1
) 複製到另一個目錄 (dir2
)?我不想將文件複製
*.c
到.*.txt``dir2
cp
線上手冊頁無法幫助我。
除了 eboix 的
find
命令(因為它在空白處中斷,我將在最後放置一兩個更安全的方法),您可以使用bash
’ 的extglob
功能:# turn extglob on shopt -s extglob # move everything but the files matching the pattern mv dir1/!(*.c) -t dir2 # If you want to exclude more patterns, add a pipe between them: mv dir1/!(*.c|*.txt) -t dir2
請參閱
bash
手冊頁了解更多關於 extglob 的功能。請注意,這不是遞歸的,因此只會dir1
直接移動文件,而不是子目錄。該find
方法是遞歸的。更安全的
find
命令:find dir1 ! -name '*.c' -print0 | xargs -0 mv -t dir2 find dir1 ! -name '*.c' -exec mv -t dir2 {} +
如需更多模式,只需添加更多
! -name
語句:find dir1 ! -name '*.c' ! -name '*.txt' -print0 | xargs -0 mv -t dir2 find dir1 ! -name '*.c' ! -name '*.txt' -exec mv -t dir2 {} +