そのため、ファイル内のオーディオを使用して2つの映画を一緒に追加するスクリプトがあります$1.audio
。私がやりたいことは、ディレクトリ内のすべてのファイルの名前を次のように変更することです。
*.mp4
到着する:
*.audio
元のファイル名を保持してください。
答え1
このコマンドを使用できますrename
。移植性はありませんが、ディストリビューションによって異なる形で存在します。
CentOS/RHEL と Fedora の場合:
rename .mp4 .audio *.mp4
すべきこと。man rename
CentOS 6から:
SYNOPSIS
rename from to file...
rename -V
DESCRIPTION
rename will rename the specified files by replacing the first occur-
rence of from in their name by to.
UbuntuとDebianのバリエーションの場合:
rename 's/\.mp4$/.audio/' *.mp4
それは行わなければなりません。man rename
Ubuntu 14.04以降:
SYNOPSIS
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
DESCRIPTION
"rename" renames the filenames supplied according to the rule specified
as the first argument. The perlexpr argument is a Perl expression
which is expected to modify the $_ string in Perl for at least some of
the filenames specified. If a given filename is not modified by the
expression, it will not be renamed. If no filenames are given on the
command line, filenames will be read via standard input.
For example, to rename all files matching "*.bak" to strip the
extension, you might say
rename 's/\.bak$//' *.bak
答え2
奇妙な名前のファイルを処理するための迅速で移植可能なソリューションは次のとおりです。
find . -name "*.mp4" -exec sh -c 'for i do mv -- "$i" "${i%.mp4}.audio"; done' sh {} +
答え3
次のfor
ループを使用してください。
for f in *; do
[ -f "$f" ] && mv -v -- "$f" "${f%.mp3}.audio"
done
for i in *
現在の作業ディレクトリ(ドットファイルを除く)のすべてのファイルとディレクトリを繰り返し、現在処理されているファイル$f
[ -f "$f" ]
通常のファイルであることを確認してください。mv -v
ファイル名の変更(--
ファイル名は引数として誤って解釈されません)${f%.mp3}.audio
.mp3
拡張子を削除して.audio
拡張子を追加します(パラメータ拡張)
答え4
あなたはそれを使用することができます
for file in `ls *.mp4`; { mv $file `echo $file | sed 's/.mp4/.audio/g'`; }