我想將分散在不同目錄中的文件複製到單個目錄中。bash:複製具有相同模式的文件
find . -name "*.off" > offFile
while read line; do
cp "${line}" offModels #offModels is the destination directory
done < offFile
雖然文件offFile
有1831行,但cd offModels
和ls | wc -l
給1827,我認爲四個文件結束與「.off」不會被複制。
起初,我認爲因爲我在shell腳本中使用了雙引號,所以名稱中包含dollor符號,反引號或反斜線的文件可能會丟失。然後我找到一個名爲$ ....的文件,但是如何找到另外三個文件? cd offModels
和ls > ../File
後,我寫了一個python腳本是這樣的:
fname1="offFile" #records files scattered
with open(fname1) as f1:
contents1=f1.readlines()
fname2="File"
with open(fname2) as f2:
contents2=f2.readlines()
visited=[0]*len(contents1)
for substr in contents2:
substr="/"+substr
for i, string in enumerate(contents1):
if string.find(substr)>=0:
visited[i]=1
break
for i,j in enumerate(visited):
if j==0:
print contents1[i]
輸出提供了四根線,而他們是錯誤的。但是我可以找到目標目錄中的所有四個文件。
編輯
作爲註釋,回答指出,有四個文件與其他四個重複的名字。有一件事現在讓我感興趣的是,用我使用的bash腳本,複製了名稱爲$CROSS.off
的文件。這讓我真的很驚訝。
也許你有重複名稱的文件。 – luoluo