我的想法是,我想读取特定文件夹中的任何.txt文件并执行某些操作。所以我尝试了这段代码:
#!/bin/bash
#Read the file line by line
while read line
do
if [ $i -ne 0 ]; then
#do something...
fi
done < "*.txt"
echo "Finished!"
我想你现在有了我的想法。谢谢你的任何建议。
做完一些事后,我想把文件移到另一个文件夹。
答案 0 :(得分:4)
不确定$i
语句中的if
是什么..但您可以逐行读取目录中的所有.txt文件:
while read line; do
# your code here, eg
echo "$line"
done < <(cat *.txt)
对于“特定目录”(即不是您当前所在的目录):
DIR=/example/dir
while read line; do
# your code here, eg
echo "$line"
done < <(cat "$DIR"/*.txt)
答案 1 :(得分:3)
为避免不必要地使用cat
,您可以使用for
循环:
for file in *.txt
do
while read line
do
# whatever
mv -i "$file" /some/other/place
done < "$file"
done
这会分别处理每个文件,因此您可以单独对每个文件执行操作。如果您想将所有文件移动到同一个地方,您可以在循环外执行此操作:
for file in *.txt
do
while read line
do
# whatever
done < "$file"
done
mv -i *.txt /some/other/place
正如评论中所建议的,我已将-i
切换添加到mv
,在覆盖文件之前会提示。这可能是一个好主意,尤其是当您展开*
通配符时。如果您不想提示,可以使用不会覆盖任何文件的-n
开关。