从文件、文件夹及其子文件夹中删除前导空格

Sas*_*cha 5 files directory rename

我想出了这个,但不幸的是它不会影响子文件夹中的任何文件/文件夹。

find . -exec rename "s/^\s+//" {} \;
Run Code Online (Sandbox Code Playgroud)

文件夹结构:

foo
|-- \ bar
`-- \ foo1
    |-- \ bar1
    `-- \ foo2
        `-- \ bar2
Run Code Online (Sandbox Code Playgroud)

Jac*_*ijm 3

重命名需要从下到上进行

问题是您需要从下到上重命名目录。否则,该命令将尝试重命名已移动(重命名)文件夹内的文件和目录,因此无法再找到它们。

这是可以使用pythons 的地方os.walk(),与topdown=False

在一个小脚本中:

#!/usr/bin/env python3
import os
import shutil
import sys

for root, dirs, files in os.walk(sys.argv[1], topdown=False):
    for f in files:
        if f.startswith(" "):
            shutil.move(root+"/"+f, root+"/"+f.strip())
    for dr in dirs:
        if dr.startswith(" "):
            shutil.move(root+"/"+dr, root+"/"+dr.strip())
Run Code Online (Sandbox Code Playgroud)

使用