0

読んでくれてありがとう&あなたの提案。ファイルをそれぞれのディレクトリに移動しています。一部のファイルのみが区切り文字として使用され_、一部のファイル-(アンダースコアとハイフン)が使用されています。さまざまな区切り文字をテストする方法はありますか?

例えば:

ParentDir
    1897/
    1898/
    1994summer/
    file-1897-001.txt
    file-1897-002.txt
    file-1898-001.txt
    file-1898-002.txt
    file_1994summer_001.txt
    file_1994summer_002.txt

私は次の(理解できるように冗長な)シェルスクリプトを使用して処理しています。

!/bin/sh
for f in *.jp2
do
base=${f%.txt}
echo "base fileName is $base"
fileName=`echo "$base" | cut -f 2 -d _`
echo "truncated fileName is $fileName"
dir=$fileName
echo "Directory is $dir"
mv -v "$f" "$dir"
sleep 1
done

cutコマンドを使用するときは、区切り文字で区別できるようにしたいと思います。それは可能ですか?時間と提案を事前に感謝します。乾杯!

4

1 に答える 1

1
case "${fName}" in 
    *_* ) underscore_funnyFace_processing "${fName}" ;; 
    *-* ) hyphen_funnyFace_process "${fName}" ;; 
    * ) all_other_processing "${fName}" ;; 
esac

ボーンシェルがケース処理をサポートしていることはほぼ間違いありません。テストするものにアクセスできません。

bourne / bash / ksh / zshの違いは、bourneシェルがサポートする基本パターンの拡張として各シェルが持つシェルワイルドカードパターンにあります。

これがお役に立てば幸いです。

于 2012-04-21T20:23:52.977 に答える