9个稳定版本
2.1.4 | 2021年12月11日 |
---|---|
2.1.3 | 2021年6月21日 |
2.1.2 | 2021年4月9日 |
2.1.1 | 2021年1月21日 |
0.1.1 | 2019年6月13日 |
#321 in 文件系统
25KB
478 行
unf
UNixize文件名 — 替换文件名中的讨厌的Unix字符
关于
文件名中的某些字符对命令行用户来说是个问题。例如,空格和括号在shell中被特殊处理。unf
会重命名这些文件,这样你就不必再为你的Windows用户朋友发送的令人烦恼命名的zip文件而烦恼了。
安装
使用cargo
cargo install unf
这将安装到~/.cargo/bin
,请确保它在你的PATH
中。
Arch Linux
从AUR安装unf
。
用法
unf [FLAGS] <PATH>...
<PATH>...
:要unix化文件名的路径
-r
--recursive
:递归地unix化目录中的文件名。如果指定的某些路径是目录,unf将递归地对其内容进行操作
-f
--force
:不交互式提示重命名每个文件
示例
$ unf 🤔😀😃😄😁😆😅emojis.txt
rename '🤔😀😃😄😁😆😅emojis.txt' -> 'thinking_grinning_smiley_smile_grin_laughing_sweat_smile_emojis.txt'? (y/N): y
$ unf -f 'Game (Not Pirated 😉).rar'
rename 'Game (Not Pirated 😉).rar' -> 'Game_Not_Pirated_wink.rar'
递归
$ unf -rf My\ Files/ My\ Folder
rename 'My Files/Passwords :) .txt' -> 'My Files/Passwords.txt'
rename 'My Files/Another Cool Photo.JPG' -> 'My Files/Another_Cool_Photo.JPG'
rename 'My Files/Wow Cool Photo.JPG' -> 'My Files/Wow_Cool_Photo.JPG'
rename 'My Files/Cool Photo.JPG' -> 'My Files/Cool_Photo.JPG'
rename 'My Files/' -> 'My_Files'
rename 'My Folder' -> 'My_Folder'
冲突
$ unf -f -- --fake-flag.txt fake-flag.txt ------fake-flag.txt ' fake-flag.txt' $'\tfake-flag.txt'
rename '--fake-flag.txt' -> 'fake-flag_000.txt'
rename '------fake-flag.txt' -> 'fake-flag_001.txt'
rename ' fake-flag.txt' -> 'fake-flag_002.txt'
rename ' fake-flag.txt' -> 'fake-flag_003.txt'
常见问题解答
这有用吗?
希望对某些人有用。我相信在某些情况下,这个工具是有用的。
- 下载由非CLI用户上传的文件,特别是命名不佳的大归档
- 浏览器下载重复附加的
(1)
- 利用宽松的Unix文件名限制的Unix工具(如
youtube-dl
,它从视频标题创建文件名)
这如何处理冲突?
由于 unf
是一个自动批量重命名工具,可能会存在路径中已经存在 Unix 化文件名的情况。为了解决这个危机,unf
通过在文件名前缀后附加并递增一个零填充的数字来处理。一个示例在这里显示 这里。
为什么解决冲突的数字是零填充的?
它有一个很好的特性,当使用按 ASCII 值排序文件名的工具时,如 ls
和 shell 完成时,可以保持有序。
为什么不直接使用 shell 完成来访问问题文件名呢?
Shell 完成可以自动插入反斜杠转义字符,但这不是很理想。反斜杠转义字符会使文件名可读性大大降低。然而,shell 完成对于调用 unf
来说是很棒的。
依赖项
~10–22MB
~281K SLoC