繁体   English   中英

Mac Terminal Bash awk将多个文件名更改为$ NF输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM