2013-08-26 246 views
1

有時我遇到了一種情況,我必須將包含文件夾中特定模式的所有文件從文件夾複製到另一個文件夾。將包含文件夾中特定文本的文件從文件夾複製到其他文件夾

例如,DirA包含100個文件,其中有60個文件包含一個模式FOO。我的要求是將這60個文件從DirA複製到DirB

我通常會編寫一個小shell腳本來完成這項工作,它可以正常工作。但是,我試圖瞭解是否有辦法只使用某些命令的組合,以至於我不需要編寫任何shell腳本。

回答

6

您可以使用

cp `grep -l 'FOO' dirA/*` dirB/ 

grep -l將匹配模式的文件只能輸出名稱。

+0

也許你應該加上' - r'選項來grep因爲orherwise終端抱怨說dirA /是一個目錄 – tigerjack89

0

下面的腳本工作,你正在尋找

cd /"path were file exist" 
grep -w "word you want to search inside a file" "file.name/write nothing in case multiple files" >/dev/null 

if [ $? -eq 0 ] 

then 
    mv ls -ltr | grep your word /path to move on 

    fi 
0

什麼?如果所有必需的文件開始FOO包含的具體內容,並保留目錄結構

cp dirA/FOO* dirB 
0

複製文件可以這樣做:

cp --parents `grep -lr 'text_content' ./*` /path/to/copy/ 
相關問題