スペースをアンダースコアに変更するには、ファイル名を変更します。

スペースをアンダースコアに変更するには、ファイル名を変更します。

MS Windowsで生成された名前にスペースを含むファイル(mp3、wav、txt、doc)がたくさんあります。例えばThe file of whoever.doc

スペースを下線またはドットに変更して、一度に名前を変更したいと思います。

答え1

シェルはこれを簡単に実行できます(これはオペレータがksh93、zsh、bash、mksh、yash、または(一部のバージョン)busybox shを使用していると仮定します${var//pattern/replacement}):

for file in *.doc *.mp3 *.wav *.txt
do
  mv -- "$file" "${file// /_}"
done

*.doc名前を変更したいファイルと一致するように... globを変更します。

現在のファイル名にスペースが含まれている現在のディレクトリのすべてのファイル名を変更するには:

for file in *' '*
do
  mv -- "$file" "${file// /_}"
done

「クローバー」チェックを追加することも検討できます。

for file in *' '*
do
  if [ -e "${file// /_}" ]
  then
    printf >&2 '%s\n' "Warning, skipping $file as the renamed version already exists"
    continue
  fi

  mv -- "$file" "${file// /_}"
done

または、ファイルを上書きする前にユーザーにメッセージを表示するオプションをmv使用してください。-i

答え2

前述のプログラムに加えてデトックス興味があるかもしれません。これは特別に設計されており、スペースに加えて多くのことを処理できます。ファイル名にウムラウト、括弧、またはその他の奇妙な内容が含まれていない場合は、ディレクトリツリーの上部で実行する必要があるタスクを正確に実行する必要があります。

detox -r .

これにより、ディレクトリ名も変更されるため、UsersWindowsシステムのディレクトリで実行しないでください。そうしないと、問題が発生する可能性があります。 Windowsでは、ユーザーディレクトリの特定のフォルダに特定の名前が必要です。これにより、そのフォルダが変更されます。 )フォルダ名)。

答え3

たとえば、次のように使用できますsed

mv -i "${original_file}" "$(echo "${original_file}" | sed 's/ /_/g')"

ここに例があります。

名前にスペースを含むファイルを作成します。

touch "/tmp/test file with spaces"

ファイルの名前を変更します。

mv -i \
"/tmp/test file with spaces" \
"$(echo "/tmp/test file with spaces" | sed 's/ /_/g')"

ファイルの新しい名前は次のとおりです。

test_file_with_spaces

次のように同じことができますtr

mv -i "${original_file}" "$(echo "${original_file}" | tr ' ' _)"

または、Bash サブストリング置換を使用します。

mv -i "${original_file}" "${original_file// /_}"

または、rename次のコマンドを使用します。

rename "s/ /_/g" "${original_file}"

答え4

Austin Hemmelgarnが上記で正解を提示した。以下を使用してください。

    detox -r .

コマンドプレビューを実行する前に、detox次のオプションを使用して変更します。-n

    detox -n -r .

detox開始点としてホームディレクトリからコマンドを実行し、隠しファイルとディレクトリの両方を除外し、ディレクトリなどの特定のディレクトリをtimeshift除外するには、次の形式を使用します。

find ~ -path '*/\.*' -prune -o -path */timeshift/* -prune -o -exec detox -n {} \;

上記のコマンドを実際に実行するには削除します。-n

関連情報