首页 > 解决方案 > 仅当表达式存在时 Sed 才替换子字符串

问题描述

在 bash 脚本中,我试图删除文件名中的目录名:

documents/file.txt
direc/file5.txt
file2.txt
file3.txt

因此,我尝试先查看是否有“/”,如果有,请删除之前的所有内容:

for i in **/*.scss *.scss; do
    echo "$i" | sed -n '^/.*\// s/^.*\///p'
done

但它不适用于当前目录中的文件,它给了我一个空白字符串。

我得到:

file.txt
file5.txt

标签: bash

解决方案


当您只需要文件名时,请使用basename而不是sed.

# basename /path/to/file

返回file

  • 是手册页

推荐阅读