这可以简化吗?
find *.xml | sed -n "s/\(^.*\)\.xml/\1/p"
目标是检索xml文件的第一部分。 我刚刚注意到那里有一个正则表达式重复,并且认为必须有一个简化的版本
答案 0 :(得分:1)
不,没有简化版本。 find
是一种专业工具 - 它不会实现任意文本处理支持。
专注于正确性的版本实际上甚至会更多详细,看起来像:
while IFS= read -r -d '' filename; do
base=${filename%.xml}
echo "Filename $filename without its extension is $base" # put your actual command here
done < <(find . -name '*.xml' -print0)
...使用NUL分隔的流而不是换行符分隔的流(由于文件名可以包含换行符而容易出错),并使用parameter expansion仅从尾随位置进行修剪。 / p>
答案 1 :(得分:0)
尝试在awk中关注并告诉我这是否有帮助。
awk 'prev && FNR==1{close(prev);print prev} FNR==1{prev=FILENAME;sub(/\..*/,"",prev);} END{print prev}' *.xml