sedまたはtr(bash)を使用せずに、特定のLinuxファイル名の複数のスペースを圧縮します。

sedまたはtr(bash)を使用せずに、特定のLinuxファイル名の複数のスペースを圧縮します。

以下を実行する関数を作成する必要があります。関数は次の形式のファイル名を受け取ります。*.station

単語間に複数のスペースがある可能性があるため、単語間に余分なスペースを削除して1つだけ残したいと思います。

たとえば、(1): aa__________a____aa _____________ ssd________.stationを次に変更する必要があります。aa_a_aa_ssd.station

(2): 次aa______________a.stationのように書く必要があります。aa_a.station

_(上記の下線()はスペースを表します。)

ベストアンサー1

shopt -s extglob
file="aa     a       a.station"
echo mv "$file" "${file// +( )/ }"

別のオプションはループすることです

"${file//  / }"

一行だけ残るまで:

file="a                      a"

last_run=""
new="$file"
while [ "$last_run" != "$new" ]; do
        last_run="$new"
        new="${last_run//  / }"
done

echo mv "$file" "$new"

またはスプレーを使用してください。

IFS=" "
mv "$file" "$(echo $file)"

おすすめ記事