「-」記号までのファイル名を認識し、同じ名前のフォルダを作成し、すべてのファイルをそのフォルダに移動するスクリプト

「-」記号までのファイル名を認識し、同じ名前のフォルダを作成し、すべてのファイルをそのフォルダに移動するスクリプト

私はこれを持っています

/Folder1/108462-2.jpg
/Folder1/108462-3.jpg
/Folder1/BSR2333-1.jpg
/Folder1/BSR2333-2.jpg
/Folder1/DKS23108554-1.jpg
/Folder1/DKS23108554-2.jpg

私はこれを欲しいです:

/108462/108462-2.jpg
/108462/108462-3.jpg
/BSR2333/BSR2333-1.jpg
/BSR2333/BSR2333-2.jpg
/DKS23108554/DKS23108554-1.jpg
/DKS23108554/DKS23108554-2.jpg

私はこれを見ました。

do if [[ -f "$file" ]]; then mkdir "${file:0:9}" mv "$file" "${file:0:9}"; fi; done 

しかし、完全には実現していません...

しかし、フォルダを作成し、そのフォルダにファイルを入れるために「-」までの名前全体を使用するように修正するにはどうすればよいでしょうか。よろしくお願いします。Macターミナル初心者です

答え1

説明に基づいて、先頭を/Folder1フォルダー内のファイル名から-ファイル名の まで変更します。

これは原始的な例ですが、意味のある変数名読みやすいコードのために。

#! /bin/bash

pathname=/Folder1/108462-2.jpg
newfolder="$(dirname "$pathname")"
newfolder="${newfolder/-.*$//}"
filenamepartofpathname="$(basename $pathname)"
newpathname="$newfolder/$filenamepartofpathname"
echo "$newpathname"

シェルチェック出力は生成されません:

$ shellcheck primitive-example.sh
(no output)
$ ./primitive-example.sh
/108462/108462-2.jpg

ファイルに複数の値がある場合は、-プリミティブな例を調整する必要がある場合があることに注意してください。

「コードゴルフ」も試してみましょうhttps://codegolf.stackexchange.com/より原始的でないが読みやすいものにするための支援を得る。

関連情報