ディレクトリ名のピリオドを変更したいです。

ディレクトリ名のピリオドを変更したいです。

オンラインで見つけたすべてが失敗しました。私はunbuntu 2204を使用しており、メディアライブラリのディレクトリ名のピリオドを置き換えるためにbashスクリプトを作成しようとしています。私が見つけた最新のスクリプトは4年前のものですが、それ以来状況が変わったことを知っています。とにかく試しましたが、doコマンドの2行目に誤った構文エラーが発生し、失敗しました。

私にとって必要なのは、子供の映画カタログと私の映画カタログだけです。どちらも400以上の映画を含み、一部にはタイトルにオーディオタイプや解像度などの詳細が含まれています。私はplexライブラリに表示されるので気にしません。映画のタイトルと年を括弧で囲むだけです。 Avatar.2019.4k.DTS.xyzではなくAvatar(2019)です。

最後に、ダウンロード時にディレクトリ名を正しく変更できるダウンロードハンドラを取得しましたが、戻って現在のライブラリの名前もこの形式に変更したいと思います。助けてくれてありがとう!

アップデート前にあいまいなことをお詫び申し上げます。私は一般的なLinuxコマンドに加えて、スクリプトやどのような言語も知りません。私は2013年からUbuntuを使用してきました。

4年前スクリプトリンクディレクトリ名とサブディレクトリ名のすべての点を繰り返し空白に置き換えます。

私のメディアはNASに保存され、起動時にマウントされ、次のディレクトリにあります:/home/plex/MediaShare/Kids_Movies/*および/home/plex/MediaShare/My_Movies/*

現在のディレクトリ名は次のとおりです。カンフーパンダ.3.2016.1080p.BluRay.DDP.5.1.H.265.-iVy

そして、必要なディレクトリ名は次のとおりです。カンフーパンダ3(2016)

推奨ZSHコマンドを試しましたが、zmvが認識されませんでした。最新のシェルは5.8.1です。これは私のデフォルトのシェルです。私も喜んで受け入れるカンフーパンダ.3.2016しかし、今ではディレクトリ名の型拡張子を予測することはできません。

答え1

zsh代わりに使用してくださいbash

autoload zmv
cd ~/Videos &&
  zmv -n '(**/)(*).(<1878-2024>).*(#q/)' '$1$2 ($3)'

-n結果が満足な場合は、削除(テスト実行)してください。

デフォルトでは1878を検索します。動く馬通常、1878年から2024年の間と見なされます(この記事を書く時点で今年作成された最初の映画、一重引用符で置き換えるか、または外部で動的計算を実行できます)、ディレクトリには${(%):-"%D{%Y}"}ドット"$(date +%Y)"で囲まれたデフォルト名があります((#q/)パターン内の一致制限:ファイル形式目次)を括弧で囲み、その後に数字の前に続くものが続きます。

ドットを空白に変更し、年の前の内容を大文字で表示し、数字を正規化するには(たとえば、some.path/to/the.HORSE.in.motion.00001878.foo.barに置き換えますsome.path/to/The Horse In Motion (1878))、次のように変更できます。

zmv -n '(**/)(*).(<1878-2024>).*(#q/)' '$1${(C)2//./ } ($(($3)))'

答え2

使用真珠rename、私は次をお勧めします:

rename -n 's/\.(\d{4})\.4k\.DTS/($1)/' Avatar.2019.4k.DTS.xyz

-n出力に満足したら削除します。

答え3

awkを使用して、ファイル名から目的のものを選択できます。次のコマンドを検討してください。

$ echo "Avatar.2019.4k.DTS.xyz" | awk -F. '{print $1"("$2")"}'
Avatar(2019)

echoコマンドをファイル全体のリストに置き換えてawkにパイプし、mvまたはcpコマンドを適用します。非常に短いスクリプトで行うことができます。

関連情報