2011-11-14 36 views
0

我们有一个paths.txt文件,其中包含文件夹中特定文件的路径名。 asd/fold2/some.txt
asd/fold2/some/tr6/ok.txt
我们需要将paths.txt中列出的所有文件复制到新文件夹中。 我的问题不是如何复制或移动这些文件,但我怎么能找到搜索和finaly得到移动或复制他们或任何。查找并复制txt文件中的路径名中包含的文件

+1

有点困惑。他们是相对的路径?所以你想要在同一个文件夹中的所有文件,或者你想重建其他地方的文件夹?即你想保留或压扁结构。 – Sodved

+0

@PadAd:请修改您的问题以包含paths.txt的预期大小,包括行和字符数。祝你好运。 – shellter

回答

2

您想要的:

#!/bin/sh 
# usage : script.sh paths.txt destination 
[ -f $1 ] || exit 
[ -d $2 ] || exit 

while read file 
do 
    cp $file $2 
    echo "cp $file $2" 
done < $1 
+2

有些人会抱怨你使用'cat',它可以用'... done <$ 1'来代替,但是我会在你的while循环周围使用子流程.-)。也就是说,我认为你不需要'()'对。好arg陷入前面!祝你好运。 – shellter

+0

@shellter你有没有必要使用()(这是一个坏的问题:)。我也改变了“<$ 1”,它更漂亮。谢谢。 –

2

,不检查重复的名称,它可以是简单的

cp $(<paths.txt) new_folder/ 
3

您可以使用xargs-a-I选项来做到这一点:

xargs -a files.txt -I __FILENAME__ cp __FILENAME__ dest 

说明:

  • -a:从文件读取项目而不是标准输入。
  • -I:在初始参数中替换出现的replace-str(在本例中为__FILENAME__)与从标准输入读取的名称。
相关问题