GNU/Linux >> Linux の 問題 >  >> Linux

複数のファイルの拡張子を変更するにはどうすればよいですか?

*。txtからファイル拡張子を変更したい *。textへ 。 basenameを使ってみました コマンドがありますが、複数のファイルを変更するのに問題があります。

これが私のコードです:

files=`ls -1 *.txt`

for x in $files
do
    mv $x "`basename $files .txt`.text"
done

このエラーが発生しました:

basename: too many arguments Try basename --help' for more information

承認された回答:

グレッグのウィキから直接:

# Rename all *.txt to *.text
for f in *.txt; do 
    mv -- "$f" "${f%.txt}.text"
done

*。txt *を使用したグロブパターンです 任意の文字列に一致するワイルドカードとして。 *。txt 「.txt」で終わるすべてのファイル名に一致します。

- オプションリストの終わりを示します。これにより、ハイフンで始まるファイル名の問題を回避できます。

$ {f%.txt} はパラメータ展開であり、 fの値に置き換えられます .txtの変数 最後から削除しました。

lsを解析してはいけない理由に関するエントリも参照してください。 。

basenameを使用する必要がある場合 、構文は次のようになります:

for f in *.txt; do
    mv -- "$f" "$(basename -- "$f" .txt).text"
done

Linux
  1. Linux でデフォルトのシェルを変更する方法

  2. Ubuntu でホスト名を変更する方法

  3. mysql ルート パスワードを変更する方法

  1. LinuxシステムのIDを変更する方法

  2. ホスト名を変更する方法は?

  3. 1 つのテキスト ファイルを複数の *.txt ファイルに分割する方法は?

  1. Linuxで複数のファイルを圧縮する方法

  2. 検索を使用して複数のファイルの名前を変更するにはどうすればよいですか?

  3. 単一のファイルの権限を変更するにはどうすればよいですか?