現在のディレクトリ内に異なる名前のディレクトリがたくさんあります。
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にデフォルトでインストールされているコマンドを使用したいmv
、find
、sed
、vim
、grep
、などのディレクトリ名のような記号文字を持っているかもしれません$
、&
、.
、などもそう奇妙な名前を収納してください。
私はただするでしょう:
autoload zmv
zmv '(*)/(*)(.*)' '$1$3'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加