2

嗨,我有 2 个 bash 脚本,我正试图一起工作。第一个脚本被赋予一个文件名以及文件所在的目录,如下所示:

 example_file
 /var/www/some_directory

第二个脚本用于根据文件类型对相关文件进行处理,即。如果 example_file.txt 脚本做一件事,如果它是 example_file.mkv 则完全是另一件事。我正在寻找一种方法,让第二个脚本仅根据文件名和其所在目录的名称自动确定文件扩展名类型(即在 /var/www/some_directory 中查找 example_file 并正确确定文件的扩展名)所以给定

  example_file 

脚本返回其中之一

  example_file.txt  OR example_file.mkv  OR example_file. mp3 etc etc

请注意,该目录仅包含几个文件,并且只有一个名为 example_file.*

4

3 回答 3

1
basename $(ls /var/www/some_directory/example_file.*)
于 2013-03-20T19:31:37.043 回答
0

不确定我理解正确:-您有一个没有扩展名的文件-您希望脚本输出其名称并添加正确的扩展名?

如果是这样:(man file在 unix 系统上,file使用所谓的“魔术”确定文件的内容,这是文件的前几个字节,并根据魔术字节告诉它的内容输出不同的描述)

于 2013-03-20T19:38:20.523 回答
0

从列表中获取文件名,然后使用 switch 语句对其进行操作:

#! /bin/bash

dir="/var/www/some_directory"
file_prefix="example_file"

filename=$(ls -1 "$dir" | grep "^$file_prefix")
case "$filename" in
    *.txt)
        # do txt stuff
        ;;
    *.mp3)
        # do mp3 stuff
        ;;
    *)
        echo unrecognized
        ;;
esac
于 2013-03-20T19:46:30.940 回答