【发布时间】:2014-09-13 08:00:16
【问题描述】:
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: cannot open 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: 语法错误:“done”意外(期待“do”)
这段代码也给我错误
FILENAME=fromDirs.txt
awk '{kount++;print kount, $0}
END{print "\nTotal " kount " lines read"}' $FILENAME
2.sh: : not found awk: can't open file fromDirs.txt source line number 2
那么如何逐行读取文件并做我需要的?
【问题讨论】:
-
试试
bash,而不是sh -
尝试使用
ksh,或 dbl 检查您的 PATH 环境。我没有使用 FreeBSD 的经验,但很难想象bash或ksh不可用。祝你好运。
标签: linux unix grep find freebsd