文件夾和子文件夾直到現在,當我想我一直在使用一個包含完整路徑列表,並使用從列表中收集的文件:的bash shell:遞歸搜索從列表
cat pathlist.txt | xargs -I % cp % folder
不過,我想就像能夠遞歸搜索文件夾和它的子文件夾並複製純文本列表中的文件名(不是完整路徑)中的所有文件一樣。
我該怎麼做呢?
謝謝!
文件夾和子文件夾直到現在,當我想我一直在使用一個包含完整路徑列表,並使用從列表中收集的文件:的bash shell:遞歸搜索從列表
cat pathlist.txt | xargs -I % cp % folder
不過,我想就像能夠遞歸搜索文件夾和它的子文件夾並複製純文本列表中的文件名(不是完整路徑)中的所有文件一樣。
我該怎麼做呢?
謝謝!
試着這麼做
find folder_to_search -type f | grep -f pattern_file | xargs -I % cp % folder
您似乎在xargs cp中存在問題,複製/粘貼錯誤? – tripleee
完美!我很感謝每個人的幫助,而且對其他人沒有冒犯性,但是邁克爾的回答立刻對我最有意義......並且更重要的是馬上工作了。 –
舉起來是有問題的。我需要它只抓取完全匹配的文件,如果不跳過它們。現在,如果我在列表中有一個名爲123456.tif的文件,並且該文件夾中沒有匹配的文件,它就會抓取23456.tif。我怎樣才能解決這個問題? –
使用find命令。
while read line
do
find /path/to/search/for -type f -name "$line" -exec cp -R {} /path/to/copy/to \;
done <plain_text_file_containing_file_names
假設:
在列表中的文件有標準名稱沒有,說他們在新行或特殊字符。
注:
如果在列表中的文件具有非標準文件名,TT將是不同的球賽。欲瞭解更多信息,請參閱find manpage並尋找-print0
。總之,你應該使用空字符串來操作。
假設您的文件名列表包含裸文件名,因爲它適合作爲參數傳遞給find -name
,您可以做到這一點。
sed 's/^/-name /;1!s/^/-o /' pathlist.txt |
xargs -I % find folders to search -type f \(% \) -exec cp -t folder \+
如果您cp
不支持-t
選項源前指定目標文件夾,或者您find
不支持-exec ... \+
你將需要適應這一點。
只是爲了解釋這是怎麼回事就在這裏,輸入
test.txt
radish.avi
:
被插入到
find folders to search -type f \(-name test.txt -o -name radish.avi \
-o name : \) -exec cp -t folder \+
使用find命令。 – 123
你想從哪裏找到文件夾?當前目錄以及將文件複製到哪裏?提供示例 – Inian