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

bash スクリプトを使用してファイル名のスペースを置き換える方法

detox を使用できます ダグ・ハープル著

detox -r <folder>

rename を使用 (別名 prename ) これは、すでにシステムにある可能性のある Perl スクリプトです。 2 つのステップで行います:

find . -name "* *" -type d | rename 's/ /_/g'    # do the directories first
find . -name "* *" -type f | rename 's/ /_/g'

ユルゲンに基づく /usr/bin/rename の "Revision 1.5 1998/12/18 16:16:31 rmb1" バージョンを使用して、単一の境界でファイルとディレクトリの複数のレイヤーを処理できます。 (Perl スクリプト):

find /tmp/ -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;

私が使用するもの:

for f in *\ *; do mv "$f" "${f// /_}"; done

再帰的ではありませんが、非常に高速でシンプルです。ここの誰かが再帰的に更新できると確信しています.

${f// /_} 一部は、bash のパラメーター展開メカニズムを利用して、パラメーター内のパターンを指定された文字列に置き換えます。関連する構文は ${parameter/pattern/string} です。 .参照:https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html または http://wiki.bash-hackers.org/syntax/pe .


find . -depth -name '* *' \
| while IFS= read -r f ; do mv -i "$f" "$(dirname "$f")/$(basename "$f"|tr ' ' _)" ; done

ディレクトリのことを考えていなかったので、最初はうまくいきませんでした.


Linux
  1. Bashスクリプトをデバッグする方法は?

  2. シェルスクリプトBashでサブストリングをチェックする方法は?

  3. Linuxでファイルの名前を変更するにはどうすればよいですか?

  1. エイリアス コマンドを bash スクリプトまたは .bashrc ファイルで機能させる方法

  2. Bash スクリプトのスクリプト ファイル名を知るにはどうすればよいですか?

  3. VimでBashスクリプトを強調表示するには?

  1. Bashを使用してファイルの最後から2番目の行を読み取る方法は?

  2. Linuxでbashスクリプトを使用してインターネットアクセスをチェックするには?

  3. bashスクリプトを使用してcrontabジョブをcrontabに追加するには?