如何提取目录中文件的扩展名?
问题描述:
该目录的名称是已知的,并且已知此目录中的所有文件具有相同的扩展名。我只需要提取一个扩展名并将其分配给一个变量。如何提取目录中文件的扩展名?
我有一个脚本,根据目录的内容采取不同的例程。例如,如果该文件夹包含jpg
文件,则该脚本将在tiff
文件上执行不同的操作。我的脚本不需要知道文件名或数字,只需知道它们的扩展名。所以我需要提取任何一个文件的扩展名(所有文件具有相同的扩展名),并将其分配给一个变量。
我试图做这样的事情:
variable=$(basename "/path/dir/*")
extension="${variable##*.}"
其中"*"
通配符列出的所有文件。我只需要一个扩展。
答
extension=$(ls directory_path/ | awk -F. 'NR==1{print $NF}')
答
您可以使用awk
找到扩展名。
for file in directory/*.*; do
var=$(echo $file | awk 'BEGIN{FS="."} {print $NF}')
break
done
在这个例子中,FS告诉awk使用句点“。”分隔字段,$ NF指定最后一个字段。
答
file=$(find directory -maxdepth 1 -mindepth 1 -type f -print -quit)
ext="${file##*.}"
的find
命令查找在directory
第一个文件,打印路径和退出。结果(路径)写入file
变量。
下一行删除路径前面的最长匹配*.
,并将结果赋给ext
变量。
根据需要调整-maxdepth
和-mindepth
选项。
你是什么意思决定未知文件的扩展名?有'file'命令告诉你文件的类型。你是否要求一个只提取给定文件名的扩展名的bash脚本? – varlogtim
目录是已知的,文件名是未知的,不需要知道名称或有多少。我的脚本中只需要其中一个文件扩展名。 – siamak
您能否提供一个目录内容的例子以及脚本中需要的内容? – varlogtim