如何使用 SED 去除文件名

如何使用 SED 去除文件名

g_inboundDir 我有一个包含值“/tmp/AI_INBOUND”的变量。
现在,我需要读取变量“g_inboundDir”指向的目录中的文件,然后使用这些文件。目录“/tmp/AI_INBOUND”包含文件 a.pdf、b.pdf c.pdf 等。

注意:我不想将当前目录更改为“/tmp/AI_INBOUND”

我写了以下代码:

for i in `ls ${g_inboundDir}/*.pdf 2>/dev/null`
do
    j=`echo $i | sed   "s/${g_inboundDir}//"`;
    echo $j;
done;

我期望echo $j会给我文件名,但我在 sed 命令中收到错误。

答案1

你不需要达到sed这个目的:

for i in "${g_inboundDir}"/*.pdf
do
   echo "${i##*/}"; # will give u the filename
   # aliter:
   echo "${i}" | sed -e 's|.*/||' ;# will give the filename via sed as u wanted
done

答案2

for i in `ls ${g_inboundDir}/*.pdf 2>/dev/null`
do
    basename $i
done

相关内容