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 命令行中是否可以这样做?
这将正确处理包含奇数字符(如空格甚至换行符)的文件,并且应该适用于任何仅基于 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)
这是它的作用:
对于模型目录及其子目录下名称中包含下划线的每个文件(不是目录),将文件重命名为原位并去掉所有下划线。
您可以简单地使用 来完成此操作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)