【问题标题】:Get only file name in variable in a for loop在for循环中仅获取变量中的文件名
【发布时间】:2022-01-07 16:17:14
【问题描述】:

我有一个在文件中写入文本的 for 循环:

for f in $DATA_DIRECTORY 
do 
    echo ' input.'$f '{'
    echo '  copy = ${source.copy}"'$f'.CPY"'
    echo '  data = ${source.data}"'$f'.CSV"'
    echo ' }'
done

但是这里的“f”变量看起来像这样:

/path/to/my/file/FILE.TXT

我想要得到的只是文件名,而不是完整路径及其扩展名:

FILE

顺便说一句,我试图像这样更改我的 f 变量,所以我没有得到扩展但它不起作用:

{$f%%.*}

【问题讨论】:

    标签: bash shell unix echo


    【解决方案1】:

    你需要两行;不允许使用链式运算符。

    f=${f##*/}  # Strip the directory
    f=${f%%.*}  # Strip the extensions
    

    或者,您可以使用basename 命令在一行中剥离目录和一个扩展名(假设您知道它是什么)。

    f=$(basename "$f" .txt)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-21
      • 2019-10-04
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 2021-11-04
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多