ファイル拡張子とフォルダ雪から末尾の空白を削除する方法は?


0

Snow Leopardのファイル拡張子とフォルダから末尾の空白を削除するにはどうすればよいですか?

理想的には、ディレクトリ内で単一のコマンドを実行し、末尾の空白とそのサブフォルダを持つすべてのファイルとフォルダを検索して削除できるようになります。

私はオートマトンでこれを行うことができなかったようです。

それは私がミスをしたくない繊細な操作です。

感謝します。

回答:


1
#!/bin/bash

IFS=$'\n'
find ~/Desktop -mindepth 1 -depth | while read f; do
    new="$(dirname "$f")/$(basename "$f" | sed 's/ *$//')"
    [[ "$f" != "$new" ]] && mv "$f" "$new"
done
  • なしIFS=$'\n'では、f読み取られる変数に| while read fは先頭または末尾のスペースがありません
  • に変更sed 's/ *$//'するsed 's/^ *//;s/ *$//と、先頭からスペースも削除されます

フィードバックありがとうございます。あなたがそれについて言及した今、私は確かに先頭の空白も削除したいと思います。その場合、スクリプトがどのように見えるか少し混乱しています。削除$'\n'| while readてこれを達成することを意味しますか?
-timoto

's/^ *//;s/ *$//'また、先頭のスペースを削除します。つまりIFS=$'\n'、読み取られるf変数while read fがなければ、末尾または先頭にスペースがないことになります。
03分

ターミナルの1行にオリジナルを入力すると、予期しないトークン「do」の近くで構文エラーが発生し、スクリプトで実行するとコマンドが見つかりません。
timoto

@timoto単一行バージョンでは、IFS=$'\n'または何かの後にセミコロンがありませんでしたか?コマンドが見つからないというエラーは、スクリプトがパスにない場合ではscript.shなく、スクリプトを実行しようとしたことが原因である可能性があり./script.shます。
リリ

はいsudo ./script.sh、cl IFS=$'\n'; for d in {1..9}; do find ~/test -name '* ' -depth $d | while read f; do mv "$f" "$(sed 's/ *$//' <<< "$f")" done doneでもエラーはありませんでしたが、ハングしてプロンプトに戻らなかったため、スクリプトを実行しています。
timoto
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.