我并不完全清楚,但是mvand rename(from util-linux-ng 2.17.2as /usr/bin/rename)之间有什么区别?除了rename接受正则表达式之外,是否还有其他优势mv?我相信rename也可以一次处理多个文件重命名,mv而不会这样做。
我无法在他们的man页面中找到明确的指示,是什么让他们与众不同,或者通过我自己的一些调查。
如何使用不同的字符串递归替换所有文件夹和文件名中的字符串?我正在运行 Red Hat 6,我可以通过以下方式找到它们:
find . -name \*string\*
Run Code Online (Sandbox Code Playgroud)
我已经设法为文件中的字符串做到了:
find . -type f -exec sed -i 's/string1/string2/g' {} +
Run Code Online (Sandbox Code Playgroud)
但是我怎么能以类似的方式替换所有文件名?
我rename.ul在我的 Ubuntu 机器上找到了一个命令。它来自util-linux包。
这对我来说很奇怪,因为我很少看到带有扩展名的可执行文件。此外,由于文件已编译,因此似乎没有必要。
是否有任何历史或技术原因?
我也很困惑,因为我找不到与此扩展名相关的文件格式。
我有大约 250 个文件名:
no_responseEvent_2002.02.07.03.15.56.970/
no_responseEvent_2002.02.10.01.47.07.450/
no_responseEvent_2002.02.13.14.18.46.00/
Run Code Online (Sandbox Code Playgroud)
我想从每个文件名中删除“no_response”。
我怎么做?
我知道 for 循环可以工作,但我对如何实现它感到困惑。
我在一个目录中有很多文件,命名如下 ID_OTHER_STUFF.txt 我想将它们全部重命名为 ID.txt。这不是重复的,因为我不知道如何指定这种模式。
我有一个 38GB 的文件夹,里面有 800 个 MP4 视频。重新下载后,文件名没有空格,所有单词都连在一起,但还是TitleCase。
所以从TitleCase我需要Title Case。
批量重命名这些文件的最有效方法是什么?
我记得很久以前我的发行版中就包含了rename或autorename,但现在似乎没有了。
有没有办法在unix中批量复制/移动文件?我认为这可能是一个选择,cp/mv但我找不到任何方法来做到这一点。
我有一个充满图像的目录:
DSCN4749.JPG
DSCN4750.JPG
DSCN4892.JPG
...
Run Code Online (Sandbox Code Playgroud)
我想要一个单线将它们重命名为(比如说)。
dscn4749.jpg
dscn4750.jpg
dscn4892.jpg
...
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
替代方案/扩展/警告
...
我发现在管道中使用 find 然后使用 grep -v 来过滤文件而不是开发复杂的正则表达式模式要容易得多。但是,当我像这样将某些东西通过管道传输到 zmv 时:
find | grep -v TFLM | zmv "(*)" "TFLM \$1"
Run Code Online (Sandbox Code Playgroud)
它只是忽略输入并继续将转换应用于所有文件。有没有办法告诉它使用管道输入?我想我可以移开过滤掉的文件,然后使用 zmv,但这并不是真正的解决方案。
有问题的代码:
ls | cat -n | while read n f; do mv "$f" `printf "video_%03d.mp4" $n`; done
Run Code Online (Sandbox Code Playgroud)
上面的代码将执行的目录中的所有文件/文件夹重命名为:
video_001.mp4
video_002.mp4
video_003.mp4
and so on...
Run Code Online (Sandbox Code Playgroud)
但是,最好只针对特定类型的文件,例如只重命名.mp4文件,而不是重命名包括目录在内的所有内容。