我运行一个脚本,在目录中生成大约10k个文件.我刚刚发现脚本中有一个错误导致某些文件名有回车符(大概是'\n'字符).
我想运行一个sed命令从文件名中删除回车.
任何人都知道哪些参数传递给sed以所描述的方式清理文件名?
我正在运行Linux(Ubuntu)
我不知道怎么sed会这样做,但这个python脚本应该做的伎俩:
这不是sed,但我发现python在做这些事情时更容易使用:
#!/usr/bin/env python
import os
files = os.listdir('.')
for file in files:
os.rename(file, file.replace('\r', '').replace('\n', ''))
print 'Processed ' + file.replace('\r', '').replace('\n', '')
Run Code Online (Sandbox Code Playgroud)
它头尾都的任何事件\r,并\n从所有的文件名在一个特定的目录中.
要运行它,将其保存cd到目标目录(包含要处理的文件),然后运行python /path/to/the/file.py.
此外,如果您计划进行更多批量重命名,请考虑使用Métamorphose.对于这些东西来说,这是一个非常好用且功能强大的GUI.而且,它是免费的!
祝好运!
实际上,试试这个:cd进入目录,输入python,然后将其粘贴到:
exec("import os\nfor file in os.listdir('.'):\n os.rename(file, file.replace('\\r', '').replace('\\n', ''))\n print 'Processed ' + file.replace('\\r', '').replace('\\n', '')")
Run Code Online (Sandbox Code Playgroud)
它是上一个脚本的单行版本,您无需保存它.
版本2,具有空间替换功能:
#!/usr/bin/env python
import os
for file in os.listdir('.'):
os.rename(file, file.replace('\r', '').replace('\n', '').replace(' ', '_')
print 'Processed ' + file.replace('\r', '').replace('\n', '')
Run Code Online (Sandbox Code Playgroud)
这是单线:
exec("import os\nfor file in os.listdir('.'):\n os.rename(file, file.replace('\\r', '').replace('\\n', '')replace(' ', '_'))\n print 'Processed ' + file.replace('\\r', '').replace('\\n', '');")
Run Code Online (Sandbox Code Playgroud)