cut*_*eth 1 regex macos bash sed
我试图遍历目录中的每个文件和文件夹,并将文件名的一部分提取到一个变量中,但我无法使 sed 正常工作。我要么得到所有的文件名,要么没有。
此版本的脚本应捕获整个文件名:
#!/bin/bash
for f in *
do
substring=`echo $f | sed -E -n 's/(.*)/\1/'`
echo "sub: $substring"
done
Run Code Online (Sandbox Code Playgroud)
但我什么也没得到:
sub:
sub:
sub:
sub:
...
Run Code Online (Sandbox Code Playgroud)
这个版本应该只给我文件名中的第一个字符:
#!/bin/bash
for f in *
do
substring=`echo $f | sed -E 's/^([a-zA-Z])/\1/'`
echo "sub: $substring"
done
Run Code Online (Sandbox Code Playgroud)
但是我得到了整个文件名:
sub: Adlm
sub: Applications
sub: Applications (Parallels)
sub: Desktop
...
Run Code Online (Sandbox Code Playgroud)
我已经尝试了无数次迭代,它基本上归结为如果我使用-n我什么也得不到,如果我不使用我得到整个文件名。
有人可以告诉我如何获得第一个字符吗?
或者,我的总体目标是能够提取一个子字符串并将其存储到一个变量中,如果有人有更好的方法,那也将不胜感激。
提前致谢。
如果要修改 shell 参数,则可能需要使用参数扩展。
for f in *; do
# This version should expand to the whole parameter
echo "$f"
# This version should expand to the first character in the filename
echo "${f::1}"
done
Run Code Online (Sandbox Code Playgroud)
参数扩展不如 强大sed,但它们内置于 shell(无需启动单独的进程或子 shell),并且有以下扩展:
和更多。
| 归档时间: |
|
| 查看次数: |
3965 次 |
| 最近记录: |