
だから、スペースがないようにディレクトリ内のすべてのファイル名を変更しようとしました。私はbashスクリプトを作業していますが、何をすべきかわかりません。さまざまな引用とエスケープを試しましたが、どの組み合わせが機能するのかわかりません。
#!/bin/bash
#change empty spaces in filenames to underlineos
lsarray="$(echo "$(pwd)""/*")"
for i in $lsarray
do
if [[ $i == *" "* ]]
then
line=$(echo $i | sed 's/ \+/\_/g')
j=$(echo $i | sed 's/ \+/\\ /g')
mv "$j" "$line"
echo "$i"
echo "$j"
echo "$line"
fi
done
mvには「特殊変数の拡張」が必要なので、上記では二重引用符を使用しました。どんなアドバイスにも感謝します。
答え1
bash
すべてのファイルをフォルダに配置します。
for name in *; do mv "$name" "${name// /_}"; done
${name/pattern/replace}
(pattern
replace
Bash パラメータ拡張)。パターンが/
(ここでパターンは/
+)で始まると、Space
すべての項目が置き換えられます。次に、置き換えられたスペースを使用してmv
ファイル名を新しい名前に変更しますname
。
答え2
Perlの名前が次のように変更されました。
rename 'y/ /_/' *