我写了一个尴尬代码,用于删除从文件中结尾的所有线。但是现在我想在包含类似文件的整个文件夹上运行此特定的尴尬操作。
awk '!/:$/' qs.txt > fin.txt
awk '{print $3 " " $4}' fin.txt > out.txt
您可以将您的awk
命令包装在外壳中的循环中,例如bash
。
myfiles=mydirectory/*.txt
for file in $myfiles
do
b=$(basename "$file" .txt)
awk '!/:$/' "$b.txt" > "$b.out"
done
编辑:评论者建议的改进引用
如果您更喜欢它,则可以使用"${file%.txt}"
而不是$(basename "$file" .txt)
。
旁边:我自己的偏好仅仅是因为man basename
比man -P 'less -p "^ Param"' bash
更容易CC_7(这是特定系统上的相关标题)。请接受我的这个怪癖,我们不要讨论info
和http://linux.die.net/man/等等。
您可以使用sed。只需在实际存储要更改的文件的目录上运行以下命令即可。
sed -i '/:$/d' *.*
这将在一个空名称中创建新文件。
mkdir NEWFILES
for file in `find . -name "*name_pattern*"`
do
awk '!/:$/' $file > fin.txt
awk '{print $3 " " $4}' fin.txt > NEWFILES/$file
done
之后,您只需要
cp -fr NEWFILES/* .