我从 bash 开始,我有这个表达线。我不知道这是什么意思。
shell 正则表达式中的这一行是什么意思?
find . -name '*.sh' | sed 's#.*/##' | sed 's#\.sh##'
答案1
该find
语句搜索当前目录及其子目录中以 结尾的所有文件.sh
,并每行打印一个文件。
运算s
符sed
将匹配的子字符串替换为其他内容。语法是s<delimiter>regex<delimiter>replacement<delimiter>
.通常/
用作分隔符但这里#
使用了。
这替代品两个语句中sed
都是空字符串。
因此,第一个语句会切断/
文件名中最后一个语句之前的所有内容(即子目录)。第二条语句截掉.sh
文件名的后缀。
文件a/subdir/hierarchy/my_script.sh
将被打印为my_script
.