2

こんにちは、一緒に作業しようとしている 2 つの bash スクリプトがあります。最初のスクリプトには、ファイルの名前と、ファイルが配置されているディレクトリが次のように指定されます。

 example_file
 /var/www/some_directory

2 番目のスクリプトは、ファイル タイプに基づいて問題のファイルを処理するために使用されます。example_file.txt の場合、スクリプトは 1 つのことを行い、example_file.mkv の場合はまったく別のことを行います。ファイル名の名前とその中にあるディレクトリのみに基づいて、2 番目のスクリプトでファイル拡張子の種類を自動的に決定する方法を探しています (つまり、example_file の /var/www/some_directory を調べて、ファイルの拡張子を適切に決定します)。与えられた

  example_file 

スクリプトは次のいずれかを返します

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

ディレクトリにはいくつかのファイルと、example_file.* という名前のファイルが 1 つだけ含まれていることに注意してください。

4

3 に答える 3

1
basename $(ls /var/www/some_directory/example_file.*)
于 2013-03-20T19:31:37.043 に答える
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 に答える
0

私が正しく理解したかどうかわかりません: - 拡張子のないファイルがあります - スクリプトに適切な拡張子を追加してその名前を出力させたいですか?

もしそうなら:man file(UNIXシステムでfileは、ファイルの最初の数バイトである「マジック」と呼ばれるものを使用してファイルの内容を決定し、マジックバイトが伝える内容に従って異なる説明を出力します)

于 2013-03-20T19:38:20.523 に答える