从目录中的所有文件名中删除下划线

gra*_*aci 3 unix scripting filenames command-line replace

我有一个文件夹“模型”,其中包含如下文件:

a_EmployeeData
a_TableData
b_TestData
b_TestModel
Run Code Online (Sandbox Code Playgroud)

我基本上需要删除下划线并制作它们:

aEmployeeData
aTableData
bTestData
bTestModel
Run Code Online (Sandbox Code Playgroud)

在 Unix 命令行中是否可以这样做?

jll*_*gre 5

这将正确处理包含奇数字符(如空格甚至换行符)的文件,并且应该适用于任何仅基于 POSIX 语法的 Unix/Linux 发行版。

find model -type f -name "*_*" -exec sh -c 'd=$(dirname "$1"); mv "$1" "$d/$(basename "$1" | tr -d _)"' sh {} \;
Run Code Online (Sandbox Code Playgroud)

这是它的作用:

对于模型目录及其子目录下名称中包含下划线的每个文件(不是目录),将文件重命名为原位并去掉所有下划线。


jay*_*ngh 5

您可以简单地使用 来完成此操作bash

for file in /path/to/model/*; do
mv "$file" "${file/_/}"
done
Run Code Online (Sandbox Code Playgroud)

如果您有rename可用的命令,那么只需执行

rename 's/_//' /path/to/model/*
Run Code Online (Sandbox Code Playgroud)