BASH:名前に含まれる情報に基づいてファイルの名前を変更して構成する

BASH:名前に含まれる情報に基づいてファイルの名前を変更して構成する

下線で区切られた情報を含む複数のファイルがあるとします。

ニックネーム_ユーザー名_実名_日付_ファイル名.txt

各ユーザー名のディレクトリを作成し、ファイル名を変更してエイリアス_ユーザー名_日付_を削除し、ファイル(現在の名前はname.txt)をユーザー名ディレクトリに移動したいと思います。

for f in *txt
         sed -F_'{$nick $user $realname $date $filename} $f
         $(mkdir -p $user)
         $(rename 's/???/$filename/g' $fullFileName)
         $(mv $fullFileName $user)

ベストアンサー1

私が正しく理解したなら、これは私の試みです。

for i in *.txt; do
  IFS='_' read -r -a array <<< "$i"
  mkdir -p "${array[1]}" && mv "$i" "${array[1]}"/"${array[4]}"
done

_区切り記号で配列を作成する

IFS='_' read -r -a array <<< "$i"

ユーザー名でディレクトリを作成し、"${array[1]}"ファイル名を"${array[4]}"そのディレクトリに移動します。

mkdir -p "${array[1]}" && mv "$i" "${array[1]}"/"${array[4]}"

注意して使用してください

おすすめ記事