有這樣的一個需求,需要將一部分符合條件的文件從一個目錄拷貝到另一個目錄中,我通過find命令從源目錄查找到符合條件的文件然后使用cp命令拷貝到目標(biāo)目錄:
方法一
命令如下:
find src_dir -name "access.log.2011102[2-6]*" -exec cp {} dst_dir \;
拷貝文件到遠(yuǎn)程主機(jī)上的目標(biāo)目錄的命令:
find src_dir -name "access.log.2011102[2-6]*" -exec scp {} 用戶名@主機(jī)ip:dst_dir \;
方法二
find src_dir -name "access.log.2011102[2-6]*" |xargs -i cp {} dst_dir
或
find src_dir -name "access.log.2011102[2-6]*" |xargs -I {} cp {} dst_dir
拷貝文件到遠(yuǎn)程主機(jī)上的目標(biāo)目錄的命令:
find src_dir -name "access.log.2011102[2-6]*" |xargs -i scp {} 用戶名@主機(jī)ip:dst_dir
或
find src_dir -name "access.log.2011102[2-6]*" |xargs -I {} scp {} 用戶名@主機(jī)ip:dst_dir
src_dir 源目錄
dst_dir 目標(biāo)目錄
access.log.2011102[2-6]* 文件名的正則表達(dá)式,獲取文件的條件
方法三
find命令結(jié)合cp命令,拷貝某個目錄下所有文件到另一個目錄中
要求整個目錄完全拷貝到另一個目錄,并且忽略個別目錄,腳本如下:
find ./ -path '/tmp/mnt/disk1/ignore' -prune -o \( -name '*' ! -name "*.tmp" \) | xargs cp "目的目錄" "{}" \;
在上面這個腳本中,當(dāng)執(zhí)行到“| xargs cp”時,假設(shè)輸入的字符串類似如下:
/tmp/mnt/disk1/tt.txt
/tmp/mnt/disk1/test/dd.txt
要求執(zhí)行“xargs cp”后,相應(yīng)拷貝成如下的目錄結(jié)構(gòu)
(即:原來disk1目錄下所有文件都拷貝到src目錄下,目錄結(jié)構(gòu)不變):
/tmp/mnt/src/tt.txt
/tmp/mnt/src/test/dd.txt