[英]Mac Terminal Bash awk change multiple file names to $NF output
我一直在使用此脚本来从目录中的所有文件夹中检索文件,并尝试将其名称更改为所需的输出。
文件名之前: Folder\\actors\\character\\hair\\haircurly1.dds
文件名之后: haircurly1.dds
我正在处理从存档中提取的具有不同名称的12,000多个纹理。 我的提取器在每个文件名中都包含了文件夹提取路径。 例如,在提取过程中,应被命名为haircurly1.dds
Folder\\actors\\character\\hair\\haircurly1.dds
被命名为Folder\\actors\\character\\hair\\haircurly1.dds
。
cd ~/Desktop/MainFolder/Folder
find . -name '*\\*.dds' | awk -F\\ '{ print; print $NF; }'
这段代码检索我正在查看的每个包含反斜杠的纹理文件(因为我已经用其他代码更改了一些文件,但是我想要一个可以一次更改所有文件的文件,而不是我必须为每个文件编写特定的代码)包含12,000多个纹理文件的文件夹)
我使用打印; 它发送给我文件路径:
./Folder\\actors\\character\\hair\\haircurly1.dds
我使用print $NF;
它在awk分隔符之后向我发送文本:
\\
haircurly1.dds
我希望将此脚本运行的每个文件名都更改为awk命令的$ NF输出。 有人知道我如何使我的脚本将文件名更改为$NF
输出吗?
谢谢
您的问题尚不清楚,但听起来像您想做的所有事情:
for file in *\\*; do
mv -- "$file" "${file##*\\}"
done
如果还不够,那么请编辑问题以阐明您的要求。
使用awk命令格式并打印“ mv”命令,然后将结果通过管道传送到bash。 额外的单引号确保bash将反斜杠视为普通char。
find . -name '*\\*.dds' | awk -F\\ '{print "mv '\''" $0 "'\'' " $NF}' | bash -x
hth
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.