ファイルの拡張子を維持しながら、ディレクトリ内のファイルの名前をそれぞれのディレクトリ名に変更するにはどうすればよいですか?

ntruter42

現在のディレクトリ内に異なる名前のディレクトリがたくさんあります。

Hello World/
Dr. Dre - Still Dre/
Angry Birds/
2018 Grand Prix Race Highlights/

そして、これらの各ディレクトリ内にはファイルがあります (それぞれに 1 つ):

source.c
song.aac
setup.apk
spanish.mp4

そして、各ファイルの名前をディレクトリ名に変更したいのですが、拡張子は変更しないでください。サンプル出力ファイル:

Hello World.c
Dr. Dre - Still Dre.aac
Angry Birds.apk
2018 Grand Prix Race Highlights.mp4

出力先は問いません。

私は、現在のディレクトリその使用内のファイルの名前を変更するために非常に多くの解決策を見つけたfor file in *し、mv "$file" "${file/oldname/newname}"しかし深いので、私が現在持っているもので、私のファイルは、サブディレクトリに1度、次のとおりです。

currdir=$(pwd)
for dir in */
do
  cd ${dir}
  file=$(echo *)
  ext=${file##*.}
  mv "*" "${dir}.${ext}"
  cd ${currdir}
done

私は zsh を使用していますが、この関数を実行しようとするzsh: source.c not foundと、行に問題があるのではないかと思われfile=$(echo *)ます。また、そこでやったことの複雑さが好きではないので、もっとクリーンな方法やワンライナーがあるかもしれません。私はすでになどのUbuntuにデフォルトでインストールされているコマンドを使用したいmvfindsedvimgrep、などのディレクトリ名のような記号文字を持っているかもしれません$&.、などもそう奇妙な名前を収納してください。

ステファン・チャゼラス

私はただするでしょう:

autoload zmv
zmv '(*)/(*)(.*)' '$1$3'

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ