web-dev-qa-db-ja.com

ファイルまたはフォルダー名の先頭または末尾のスペースを削除する

重複ファイルを取り除くためのきちんとした方法を考えました。ご存知のとおり、名前に「(1)。」、「(2)。」、「(3)。」などが含まれているものです。ターミナルウィンドウのコマンドラインで、「rm "[backslash]")。」と入力しますが、引用符は使用しません。それでできます。 [バックスラッシュ]「\」は、次の文字が括弧のペアではなく単なる文字として受け入れられることを意味します。これは、他に何もしないときに機能します。ちなみに、「rm」コマンドに「\」を入力しようとしましたが、正しく表示できなかったので、代わりに「バックスラッシュ」という用語を付けました。

フォルダまたはファイル名の「\」の外観は、そこにスペースが存在することも示しています。 Windowsで作業しない限り、名前にスペースを使用することはそれほど一般的ではありません。 Windowsでは、「完全なパス\ファイル名」を二重引用符で囲むだけです。 Ubuntuでも同様に行うことができます。または、スペースの前にバックスラッシュ「\」を付けるだけです。しかし、代わりにスペースを別の文字に置き換えたい場合はどうでしょうか?ハイフンやアンダースコアが好きですか?すべてのフォルダーとファイルに対して一度にそれをどのように行いますか?

または、スペースを削除するだけで、残りのキャラクターを一緒に詰める場合はどうなりますか?どうしますか?

そして、ここに困難があります:ただ取り除くか、先頭または末尾のスペースを取得してください。たとえ複数存在する場合でも。

最後に、完全に空のファイルとファイルを検出して削除する方法を説明します。または空のフォルダー。

3
oldefoxx
  • ファイル名から任意の数の先行スペースを削除するには、renameprename)を使用できます。

    rename -n 's/^ *//' *
    
  • ファイル名から任意の数の末尾のスペースを削除するには、renameprename)を使用できます。

    rename -n 's/ *$//' *
    

    ファイル名に満足したら、-n(ドライラン)を削除します。

  • 空のファイルまたはフォルダーを(再帰的に)削除するには:

    find . -empty
    

    満足 ?アクションを実行させます。

    find . -empty -delete
    

    現在のディレクトリのみ:

    find . -maxdepth 1 -empty -delete
    

    必要に応じて、ファイルのみに-type fを、ディレクトリのみに-type dを使用します。

man renameおよびman findを読んで、より多くのアイデアを入手してください。

11
heemayl

私はよくrenameを忘れます。プレーンbashでこれを行う方法は次のとおりです。

$ touch "     leading spaces" "trailing spaces     "

$ printf ">%s<\n" *spaces*
>     leading spaces<
>trailing spaces     <

$ for f in *spaces*; do 
    new=${f##*([[:blank:]])}        # remove leading whitespace
    new=${new%%*([[:blank:]])}      # remove trailing whitespace
    mv "$f" "$new"
done

$ printf ">%s<\n" *spaces*
>leading spaces<
>trailing spaces<
3
glenn jackman

スペースを削除するためのいくつかのアプローチ: https://stackoverflow.com/questions/2709458/bash-script-to-replace-spaces-in-file-nameshttps:// stackoverflow.com/questions/15347843/remove-whitespaces-from-filenames-in-linux

これは簡単です:「まずcdでディレクトリに入り、cd/my/directoryを実行してから、for f for *; do mv "$ f" echo $f | tr ' ' '_'; done "

さらに簡単: "s/// g" *の名前を変更

スペース、アンダースコア、ハイフンを削除する場合: "rename -i" s/[-_] // g "*"

ゼロバイトのファイルを削除するには: https://stackoverflow.com/questions/5475905/linux-delete-file-with-size-

空のファイルまたはフォルダーを処理するために、「空のファイルを削除する(コマンドから「エコー」を削除する):コード:find。-empty -type f -print0 | xargs -0 echo rm空のディレクトリを削除する(削除する)コマンドからecho '):コード:find。-empty -type d -print0 | xargs -0 echo rmdir " http://www.linuxquestions.org/questions/programming-9/bash-delete-empty -files-910203 /

半時間で自分の質問に答えたのは奇妙に思えますが、適切な単語を選んで検索するなら、それが検索エンジンの力です。ただし、先日ここに投稿した別の質問など、すぐに答えが出ない条件があります。最初に一生懸命に調査しましたが、結果が見つかりませんでしたので、AskUbuntuに投稿しました。私はチェックしましたが、まだ答えはありません。他に何を尋ねるべきか考えられるなら、検索に戻る必要があるかもしれません。

0
oldefoxx