我一直在处理这个脚本,从我目录中的所有文件夹中检索文件,并尝试将其名称更改为我想要的输出。
在文件名之前:
Folder\actors\character\hair\haircurly1.dds
文件名后:
haircurly1.dds
我正在处理超过12,000个纹理,这些纹理具有我从存档中提取的不同名称。我的提取器包括文件夹的路径,它提取每个文件名中的文件。例如,应该在提取期间将名为haircurly1.dds
的文件命名为Folder\actors\character\hair\haircurly1.dds
。
cd ~/Desktop/MainFolder/Folder
find . -name '*\\*.dds' | awk -F\\ '{ print; print $NF; }'
此代码检索我正在查看包含反斜杠的每个纹理文件(因为我已经使用其他代码更改了一些文件,但是我想要一次更改所有文件而不是我必须编写特定文件12,000个纹理文件的每个文件夹的代码)
我用print;它向我发送文件路径:
./Folder\actors\character\hair\haircurly1.dds
我使用print $NF;
并在awk分隔符之后向我发送文本:
\
haircurly1.dds
我希望将此脚本运行的每个文件名更改为awk命令的$ NF输出。任何人都知道如何让我的脚本将文件名更改为$NF
输出?
谢谢
答案 0 :(得分:0)
你的问题不明确但是你想要做的就是:
for file in *\\*; do
mv -- "$file" "${file##*\\}"
done
如果这不是您想要的所有内容,请编辑您的问题以澄清您的要求。
答案 1 :(得分:-2)
拥有你的awk命令格式并打印一个" mv"命令,并将结果传递给bash。额外的单引号确保bash将反斜杠视为普通字符。
find . -name '*\\*.dds' | awk -F\\ '{print "mv '\''" $0 "'\'' " $NF}' | bash -x
HTH