【发布时间】:2012-04-24 19:20:21
【问题描述】:
我正在制作一个 bash 脚本,它会爬取目录并将特定类型的所有文件输出到文本文件中。我已经开始工作了,它还会向控制台输出一堆我不想要的输出(文件名)
这是到目前为止的相关代码,tmpFile 是我正在写入的文件:
for DIR in `find . -type d` # Find problem directories
do
for FILE in `ls "$DIR"` # Loop through problems in directory
do
if [[ `echo ${FILE} | grep -e prob[0-9]*_` ]]; then
`echo ${FILE} >> ${tmpFile}`
fi
done
done
我放入文本文件的文件采用正则表达式 prob[0-9]*_ 描述的格式(类似于 prob12345_01)
我将 echo ${FILE} 的输出通过管道传输到 grep 中,它仍然输出到 stdout,这是我想避免的。我认为这是一个简单的解决方法,但它正在逃避我。
【问题讨论】:
-
迭代
find输出的安全方法是find ... -print0 | while read -r -d "" DIR。 Don't parsels,使用for FILE in "$DIR"/*。从echo ${FILE} >> ${tmpFile}行中删除反引号。