删除文件或文件夹名称中的前导或尾随空格

删除文件或文件夹名称中的前导或尾随空格

我找到了一个巧妙的方法来删除重复文件。你知道,那些名称中包含“(1).”、“(2).”、“(3).”等的文件。在终端窗口的命令行中,输入“rm“[反斜杠]”)。",但没有引号。这样就可以了。[反斜杠]“\”表示下一个字符仅被视为一个字符,而不是一对括号的一部分。当没有其他方法时,这种方法有效。顺便说一句,我试图在“rm”命令中输入“\”,但它无法正确显示,所以我把术语[反斜杠]放在那里。

文件夹或文件名中出现“\”也表示其中存在空格。除非您使用 Windows,否则名称中并不常见使用空格。Windows 只需将“整个路径\文件名”括在双引号中。您也可以在 Ubuntu 中这样做,或者只需在空格前加上反斜杠“\”。但是如果您想用其他字符替换空格怎么办?比如连字符或下划线?如何一次性对所有文件夹和文件执行此操作?

或者,如果您决定删除空格,将其余字符打包在一起会怎么样?您会怎么做?

这里有一个难题:只需删除任何前导或尾随空格,即使存在多个空格。

总而言之,如何检测和删除完全为空的文件。或者为空的文件夹。

答案1

  • 要从文件名中删除任意数量的前导空格,可以使用rename( prename) :

    rename -n 's/^ *//' *
    
  • 要从文件名中删除任意数量的尾随空格,可以使用rename( prename) :

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

    -n如果您对文件名满意,请删除(试运行)。

  • 要删除空的文件或文件夹(递归):

    find . -empty
    

    满意吗?让行动发生:

    find . -empty -delete
    

    仅在当前目录中:

    find . -maxdepth 1 -empty -delete
    

    如果需要,还可以-type f仅用于文件和目录。-type d

阅读man renameman find获得更多想法。

答案2

我经常忘记rename。下面是如何用普通 bash 做到这一点:

$ touch "     leading spaces" "trailing spaces     "

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

$ shopt -s extglob  
$ 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

对于删除空格,有以下几种方法: https://stackoverflow.com/questions/2709458/bash-script-to-replace-spaces-in-file-names https://stackoverflow.com/questions/15347843/remove-whitespaces-from-filenames-in-linux

这个很简单:“首先使用 cd 进入目录:cd /my/directory 然后运行:for f in *; do mv "$f" echo $f | tr ' ' '_'; done”

更简单:“重命名“s/ //g” *”

删除空格、下划线和连字符:“rename -i "s/[-_ ]//g" *”

要删除零字节的文件: https://stackoverflow.com/questions/5475905/linux-delete-file-with-size-0

为了处理空文件或文件夹,我发现了这个:“删除空文件(从命令中删除‘echo’):代码: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 上。我检查过了,还是没有答案。如果我能想到还有什么要问的话,可能不得不回去搜索。

相关内容