该脚本的主要功能是递归处理指定文件夹及其子文件夹中的文件,按照文件名的编码部分(通过空格拆分获取第一个部分)去重,只保留最新创建的文件,并删除重复文件。该功能在文件备份管理中非常有用,能够有效减少冗余文件,节省存储空间。
需要安装 Python
环境!
pythonimport os
import shutil
# 指定目标文件夹路径
target_folder = input("请输入目标文件夹路径:")
# 检查文件夹是否存在
if not os.path.exists(target_folder):
print(f"指定的文件夹 {target_folder} 不存在!")
exit(1)
# 遍历目标文件夹中的所有文件
for filename in os.listdir(target_folder):
file_path = os.path.join(target_folder, filename)
# 确保是文件而不是文件夹
if os.path.isfile(file_path):
# 按照'-'分割文件名,取第一个部分作为文件夹名称
folder_name = filename.split('-')[0]
# 创建目标文件夹(如果不存在的话)
folder_path = os.path.join(target_folder, folder_name)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# 将文件移动到对应的文件夹
new_file_path = os.path.join(folder_path, filename)
shutil.move(file_path, new_file_path)
print(f"文件 {filename} 已移动到 {folder_name} 文件夹")
保存脚本为 deduplicate.py
。
运行命令:
shpython deduplicate.py
按照提示,输入文件夹,如:
sh请输入目标文件夹路径:/path/to/folder
脚本会自动处理指定文件夹及其所有子文件夹,删除多余文件。
通过该脚本,可轻松实现文件夹中冗余文件的自动化清理工作。
需要安装Nodejs环境!
jsconst fs = require('fs');
const path = require('path');
const readline = require('readline');
// 创建一个读取用户输入的接口
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 提示用户输入目标文件夹路径
rl.question('请输入目标文件夹路径:', (targetFolder) => {
// 检查目标文件夹是否存在
if (!fs.existsSync(targetFolder)) {
console.error(`指定的文件夹 ${targetFolder} 不存在!`);
rl.close();
return;
}
// 读取目标文件夹中的所有文件
fs.readdir(targetFolder, (err, files) => {
if (err) {
console.error('读取文件夹内容失败:', err);
rl.close();
return;
}
files.forEach((filename) => {
const filePath = path.join(targetFolder, filename);
// 确保是文件而不是文件夹
if (fs.lstatSync(filePath).isFile()) {
// 按照 '-' 分割文件名,取第一个部分作为文件夹名称
const folderName = filename.split('-')[0];
// 创建目标文件夹(如果不存在的话)
const folderPath = path.join(targetFolder, folderName);
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath);
}
// 移动文件到对应的文件夹
const newFilePath = path.join(folderPath, filename);
fs.renameSync(filePath, newFilePath);
console.log(`文件 ${filename} 已移动到 ${folderName} 文件夹`);
}
});
console.log('操作完成!');
rl.close();
});
});
保存脚本为 deduplicate.js
。
运行命令:
shnode deduplicate.js
示例:
sh请输入目标文件夹路径:/path/to/folder
脚本会自动处理指定文件夹及其所有子文件夹,删除多余文件。
通过该脚本,可轻松实现文件夹中冗余文件的自动化清理工作。
Linux & MacOS 可直接使用的shell脚本:
sh#!/bin/bash
# 提示用户输入目标文件夹路径
read -p "请输入目标文件夹路径: " target_folder
# 检查目标文件夹是否存在
if [ ! -d "$target_folder" ]; then
echo "指定的文件夹 $target_folder 不存在!"
exit 1
fi
# 遍历目标文件夹中的所有文件
for file in "$target_folder"/*; do
# 确保是文件而不是文件夹
if [ -f "$file" ]; then
# 获取文件名
filename=$(basename "$file")
# 按照 '-' 分割文件名,取第一个部分作为文件夹名称
folder_name=${filename%%-*}
# 创建目标文件夹(如果不存在的话)
folder_path="$target_folder/$folder_name"
if [ ! -d "$folder_path" ]; then
mkdir "$folder_path"
fi
# 移动文件到对应的文件夹
mv "$file" "$folder_path"
echo "文件 $filename 已移动到 $folder_name 文件夹"
fi
done
echo "操作完成!"
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!