スペースを使用して複数のファイルから特定の文字を削除する

スペースを使用して複数のファイルから特定の文字を削除する

ディレクトリ内の複数の音楽トラックの名前を変更しようとすると、次のエラーが発生します。

複数のファイルを移動する場合、最後のパラメータはディレクトリでなければなりません。

スクリプトは次のとおりです。

for file in * ; do
    mv $file  $(echo $file |sed 's/^.\{5\}//g')
done

これは空白のないファイルに適用されます。このスクリプトをどのように修正しますか?

ベストアンサー1

引用符を使用する:

mv -- "$file" "$(echo "$file" | sed ...)"

それ以外の場合は、mv複数のパラメータが表示されます。名前付きファイル名はfile name with spaces4つのパラメータですmv。したがって、エラーは次のとおりですwhen moving multiple files, last argument must be a directorymvパラメータが2つ以上の場合は、複数のファイルをディレクトリに移動しようとしているとします(これが最後のパラメータになります)。


ところで、ファイル名から最初の5文字を​​削除したいようです。これは次のように簡単に行うことができますbash

mv -- "$file" "${file:5}"

編集する:ロゴを追加しました--。 @コメントありがとうございます。パブク。ダッシュで始まるファイル-も正しく処理されます。

おすすめ記事