查找从文件列表中获取的多个目录中的文件?

时间:2014-09-13 08:00:16

标签: linux unix grep find freebsd

FreeBSD 9.2 RELEASE p2

我有一个文件fromdirs.txt。在这个文件中是一个新的行分隔目录列表,如下所示:

/etc
/home
/home/goods/

我需要首先在所有目录中找到名称如“good”或包含字符串“(NODES_'TASK')”的文件,然后将所有这些文件复制到目录/tmp中。

2.sh文件chmod + x并且是755 fromDirs.txt文件chmod + x并且是755

此代码给我错误

IFS=$'\n' read -d '' -r -a dirs < fromDirs.txt
find "${dirs[@]}" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;

2.sh:无法打开fromDirs.txt:没有这样的文件或目录

2.sh:$ {dirs [...}:错误替换

但是文件fromDirs.txt存在且2.sh从它的分配目录运行,我也试图提供完整路径而不是fromDirs.txt并且错误相同

此代码给我错误

FILE=fromDirs.txt
IFS='\n'
while read -r dirs
do
find "$dirs" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;
done < "$FILE"

2.sh:6:语法错误:“完成”意外(期待“做”)

此代码也给我错误

FILENAME=fromDirs.txt

awk '{kount++;print  kount, $0}
     END{print "\nTotal " kount " lines read"}' $FILENAME

2.sh ::找不到awk:无法打开文件fromDirs.txt source number number 2

那么如何逐行阅读文件并做我需要的事情呢?

1 个答案:

答案 0 :(得分:1)

这对我有用

 for line in "`cat fromDirs.txt`"; do find "$line" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;; done