bashで拡張子のないファイルにファイル拡張子「.jpg」を追加する良い方法は何ですか?
bashで拡張子のないファイルにファイル拡張子「.jpg」を追加する良い方法は何ですか?
回答:
for f in *.jpg; do mv "$f" "${f%.jpg}"; done
for f in *; do mv "$f" "$f.jpg"; done
"${f%.jpg}"
と同じように、bashシェルの文字列操作です。`$ {string%substring}` $ substringの最短一致を$ stringの後ろから削除します。
.jpg
通常のファイルにも追加されることを知っておいてください。
名前の変更を使用できます。
rename 's/(.*)/$1.jpg/' *
rename from to file...
別の方法-ループなし
find . -type f -not -name "*.*" -print0 |\
xargs -0 file |\
grep 'JPEG image data' |\
sed 's/:.*//' |\
xargs -I % echo mv % %.jpg
壊す:
上記のコマンドは、のためにあるドライランそれはあなたがMVの前に「エコー」を削除する必要があります後、
編集「パスの引数を引用符で囲む;スペースを含むパスでの引数の分割を回避 する」必要があると示唆している人もいます。
通常、この推奨事項は当てはまりますが、この場合は当てはまりません。ので、ここでは%
置き換えられましたされていないシェル拡張ではなくによってxargs
内部的に(直接)、そう%
であっても、ファイル名にスペースを正しく置換されます。
簡単なデモ:
$ mkdir xargstest
$ cd xargstest
# create two files with spaces in names
$ touch 'a b' 'c d'
$ find . -type f -print
./c d
./a b
# notice, here are spaces in the above paths
#the actual xargs mv WITHOUT quotes
$ find . -type f -print | xargs -I % mv % %.ext
$ find . -type f -print
./a b.ext
./c d.ext
# the result is correct even in case with spaces in the filenames...
シンプルで、ファイルがあるディレクトリにcdします。
for f in *;do mv $f $f.jpg;done
for f in *;do mv "$f" "$f".jpg;done
ファイル名のスペースをサポートするために使用された方が良いでしょう。
私が使用して私の場合は、ファイルタイプを認識していませんでしたMVの助けを借りて、コマンドをファイル調べ、おそらく、ファイルの種類を見つけるためのコマンド。fileコマンドはファイルタイプを認識しない可能性があるため、この解決策はすべてのファイルに完全ではないかもしれませんが、私にとってはほとんどうまくいきました。
for f in *; do ext=$(file $f | awk '{print $2;}'); mv -n "$f" "$f.$ext"; done
awkの使用は、実際に拡張子であるコマンドファイルから返される文字列の2番目の単語を取り除くことです。
rename --dry-run * -a ".jpg" # test
* -a ".jpg" # rename
--dry-run
と-a
私のバージョンでは使用できませんrename
。これが特定のアーキテクチャに固有の場合は、指定する必要があります。
あなたは使用することができ、複数のファイルを移動します。私はこのプロジェクトのメンテナーです。構文は簡単です。
mmf files*
$ EDITORを開き、すべてのファイル名、またはデフォルトでvimを開きます。vimでCtrl + v + Gを使用してすべてのファイル名の終わりを強調表示し、ファイルを保存して終了すると、すべてのファイルの名前が変更されます
ライアン・リー
ファイル拡張子のないディレクトリ内の複数のファイルにファイル拡張子を追加するための正しい構文は次のとおりです。
find . | while read FILE; do if [[ -n `file --mime-type "$FILE" | grep 'message/rfc822'` ]]; then mv "$FILE" "$FILE".eml; fi; done;
mv "${file}" "${file}.jpg"
?