我想将分散在不同目录中的文件复制到单个目录中。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