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
那么如何逐行阅读文件并做我需要的事情呢?
答案 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