假设我在文件夹中:
MyFolder文件
以下文件:
File1.txt File2.txt File3.txt File9.txt Bob.txt
我想应用以下算法,但我不知道如何在Bash中执行它(实际上循环For是我无法做到的):
For (each file of MyFolder directory)
add "<end>" at the end of the current text file
EndFor
bash中的正确语法是什么?
提前感谢您的帮助。
答案 0 :(得分:3)
这可以做到:
for file in /your/dir/*
do
echo "<end>" >> "$file"
done
如果你的内部有一些dirs,你可能会收到错误bash: XX: Is a directory
。为避免看到它们,您可以将2>/dev/null
添加到echo
命令的末尾:
echo "<end>" >> "$file" 2>/dev/null
甚至更好(thanks Barmar),检查它们是否为文件:
[ -f "$file" ] && echo "<end>" >> "$file"
这是执行if条件的简短方法:
if [ -f "$file" ]; then
echo "<end>" >> "$file"
fi
答案 1 :(得分:1)
一种方式就是这样
#!/bin/bash
folder="myfolder"
for i in `find $folder/ -type f`
do
echo $i
echo "<end>" >> "$i"
done
答案 2 :(得分:1)
这是find
一个班轮:
find /your/dir/ -maxdepth 1 -type f -exec sh -c 'echo "<end>" >> {}' \;
-maxdepth 1
保留在子文件夹中包含文件的位置,
-type f
仅用于查找文件,-exec
为每个找到的项触发echo命令。