这可以简化吗?
find *.xml | sed -n "s/\(^.*\)\.xml/\1/p"
目标是检索 xml 文件的第一部分。 我只是注意到那里有一个正则表达式重复,并且认为一定有一个简化版本
最佳答案
不,没有简化版本。 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仅从尾随位置进行修剪。
关于regex - 使用 bash 查找文件时提取部分文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45441274/