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


6

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

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

または、スペースを削除するだけの場合は、残りの文字をまとめてください。どうしますか?

そして、これはタフなものです。単に、先頭または末尾のスペースを削除してください。複数存在する場合でも。

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

16
  • To remove any number of leading spaces from file names you can use rename (prename) :

    rename -n 's/^ *//' *
    
  • To remove any number of trailing spaces from file names you can use rename (prename) :

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

    Remove -n (dry-run) if you are satisfied with the file names.

  • To remove files or folders that are empty (recursively) :

    find . -empty
    

    Satisfied ? Let the action take place :

    find . -empty -delete
    

    Only in the current directory :

    find . -maxdepth 1 -empty -delete
    

    Also use -type f for only files and -type d for only directories if you want.

Read man rename and man find to get more idea.


0

For removing spaces, several approaches here: https://stackoverflow.com/questions/2709458/bash-script-to-replace-spaces-in-file-names https://stackoverflow.com/questions/15347843/remove-whitespaces-from-filenames-in-linux

This easy one: "First enter directory with cd: cd /my/directory and then run: for f in *; do mv "$f" echo $f | tr ' ' '_'; done"

Even simpler: "rename "s/ //g" *"

For getting rid of spaces, underscores, and hyphens: "rename -i "s/[-_ ]//g" *"

For getting rid of files that have zero bytes: https://stackoverflow.com/questions/5475905/linux-delete-file-with-size-0

For handling either empty files or folders, I found this one: "Delete empty files (remove 'echo' from the command): Code: find . -empty -type f -print0 | xargs -0 echo rm Delete empty directories (remove 'echo' from the command): Code: find . -empty -type d -print0 | xargs -0 echo rmdir" http://www.linuxquestions.org/questions/programming-9/bash-delete-empty-files-910203/

Seems odd that I answered my own question in the space of a half hour, but that is the power of a search engine if you pick the right words to search on. However, there are terms and conditions asked that produce no ready answers, such as with another question I had posted here the other day. I researched it hard first, found no results, so posted it on AskUbuntu. I've checked, and still no answer. May have to go back to doing searches, if I can think of what else to ask.


4

I often forget about rename. Here's how to do it with plain 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<