web-dev-qa-db-ja.com

ファイル名の一部に基づいてファイルをフォルダーに移動する

ダウンロードしたアニメファイルをエピソード番号のないフォルダーに移動するbashスクリプトを作成しようとしています。

ファイル名/ファイルのリスト例:

[SubsHorrible] name of show - 00 [1080p].mkv
[SubsHorrible] name of show - name2 of show - 00 [1080p].mkv
[SubsHorrible] name of show - 000 [1080p].mkv

「ショーの名前」に基づいて新しいフォルダに移動する

[SubsHorrible] name of show
   [SubsHorrible] name of show - 00 [1080p].mkv
   [SubsHorrible] name of show - 01 [1080p].mkv
[SubsHorrible] name of show - name2 of show
   [SubsHorrible] name of show - name2 of show - 00 [1080p].mkv
   [SubsHorrible] name of show - name2 of show - 01 [1080p].mkv
[SubsHorrible] name of show
   [SubsHorrible] name of show - 100 [1080p].mkv
   [SubsHorrible] name of show - 101 [1080p].mkv

どんな助けも感謝します!

1
QWEbie

支援するスクリプトを提供しなかったため、次の行を使用してファイルリストからフォルダー名を作成します。

  1. 変数を作成(またはファイル名リストファイルから読み取り):filename="[SubsHorrible] name of show - 00 [1080p].mkv"
  2. 次に、必要な部分を取得します:echo ${filename" "-*}

  3. 結果:[SubsHorrible] name of show、フォルダーを作成するにはecho ${filename%%" "-*} | xargs -d '\n' mkdirを実行します

説明:${filename%" "-*}:ファイル名の後ろから" "-までのすべてを削除してから、他のすべてを返します。

指定されたサンプルの場合:

[SubsHorrible] name of show - 00 [1080p].mkv
[SubsHorrible] name of show - name2 of show - 00 [1080p].mkv
[SubsHorrible] name of show - 000 [1080p].mkv

返却値:

[SubsHorrible] name of show
[SubsHorrible] name of show - name2 of show
[SubsHorrible] name of show

この単純なスクリプトを使用して、フォルダーを作成します。

#!/usr/bin/env bash

while IFS= read -r var
do
    mkdir "${var%" "-*}"
done < "$1"

使用法:

./createfolder.sh list

それをより大きなスクリプトに組み込みます。

  • 詳細については、これを参照してください。

https://www.cyberciti.biz/tips/bash-Shell-parameter-substitution-2.html

0
George Udosen