我正在尝试打印目录中包含扩展名(.gz)的文件名。目前我有下面的 shell 脚本,它打印绝对路径。我只想打印文件名。
有人可以就此提出建议吗?我尝试过不同的方法。
#!/bin/bash
sourceFolder=/Users/rojadhanavath/Desktop/app/logs/*.gz
sleepTimeinMinutes=200
cd $sourceFolder
for f in $sourceFolder do
echo " printing the file name $f" done
当前输出是:
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 10.gz
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 11.gz
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 12.gz
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 2.gz printing
the file name /Users/rojadhanavath/Desktop/app/logs/app-json.log copy
3.gz
我只想要文件名:
例如app-json.log copy 10.gz
答案1
您可以采用以下基本名称$f
:
for f in $sourceFolder; do
echo " printing the file name $(basename $f)"
done
或者,由于您已经使用过cd $sourceFolder
,这也将起作用:
for f in *.gz; do
echo " printing the file name $f"
done
答案2
正确的答案是@laktak。但这里还有另一种方法:
for f in "$sourceFolder"; do
echo " printing the file name ${f##*/}"
done
答案3
文件扩展名部分很简单。哪有这回事。有一些工具可以帮助您处理这个概念(例如basename
),但它们不存在,因此请忽略它。对于您需要的内容,请使用该工具dirname
。
例如
echo " printing the file name $(dirname "$f")"