【发布时间】:2023-03-22 15:25:01
【问题描述】:
如何将不同文件夹中的文件(但所有文件夹都在一个文件夹下)(不考虑它们的名称)递归地重命名为十六进制基数 16?
所以,当它进入下一个文件夹时,它会记住它之前的命名并从那里继续。
例如(与截图不同):
文件夹 1:1.jpg、1_A.jpg、... 10th_blah.jpg
文件夹 2:1.jpg,...,2000th_text1.jpg
会变成->
FolderAllTogether: 1.jpg, 2.jpg, ..., A.jpg, B.jpg, ..., 7D0.jpg
解决方案可以是 javascript、bash、python 或任何其他我可以在 macOS 上轻松运行的脚本语言。
我的代码:
const fs = require('fs')
const path = require('path');
const dir = path.resolve(__dirname, 'ImagesSuperTemp');
let i = 0
function renameFilesRecursive(dir, from, to) {
fs.readdirSync(dir).forEach(it => {
const itsPath = path.resolve(dir, it);
const itsStat = fs.statSync(itsPath);
if (itsPath.search(from) > -1) {
console.log(`${i} : rename ${from} to ${to}`);
fs.renameSync(itsPath, itsPath.replace(from, to))
i = i + 1
}
if (itsStat.isDirectory()) {
renameFilesRecursive(itsPath.replace(from, to), from, to)
}
})
}
renameFilesRecursive(dir, /\*.jpg$/, `${i.toString(16)}.jpg`);
但它什么也没做!
【问题讨论】:
-
基本上,您只需获取所有文件的完整列表,创建一个计数器(可以是 int),遍历文件并在将文件重命名为计数器十六进制值后递增该计数器
-
你是否可以访问 Perl 的独立
rename或prename? -
@Cyrus 我可以安装它。它是否正确? learn.perl.org/installing/osx.html
-
您还可以使用命令
brew install rename使用 homebrew 在 macOS 上安装 Perl 的独立rename。
标签: javascript python bash macos