该脚本的主要功能是递归处理指定文件夹及其子文件夹中的文件,按照文件名的编码部分(通过空格拆分获取第一个部分)去重,只保留最新创建的文件,并删除重复文件。该功能在文件备份管理中非常有用,能够有效减少冗余文件,节省存储空间。
需要安装 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 许可协议。转载请注明出处!