2024-12-20
温故知新
00

目录

作用/效果
Python
运行方式
Nodejs
运行方式
Shell

作用/效果

该脚本的主要功能是递归处理指定文件夹及其子文件夹中的文件,按照文件名的编码部分(通过空格拆分获取第一个部分)去重,只保留最新创建的文件,并删除重复文件。该功能在文件备份管理中非常有用,能够有效减少冗余文件,节省存储空间。

Python

需要安装 Python 环境!

python
import 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} 文件夹")

运行方式

  1. 保存脚本为 deduplicate.py

  2. 运行命令:

    sh
    python deduplicate.py
  3. 按照提示,输入文件夹,如:

    sh
    请输入目标文件夹路径:/path/to/folder
  4. 脚本会自动处理指定文件夹及其所有子文件夹,删除多余文件。

通过该脚本,可轻松实现文件夹中冗余文件的自动化清理工作。

Nodejs

需要安装Nodejs环境!

js
const 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(); }); });

运行方式

  1. 保存脚本为 deduplicate.js

  2. 运行命令:

    sh
    node deduplicate.js
  3. 示例:

    sh
    请输入目标文件夹路径:/path/to/folder
  4. 脚本会自动处理指定文件夹及其所有子文件夹,删除多余文件。

通过该脚本,可轻松实现文件夹中冗余文件的自动化清理工作。

Shell

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 "操作完成!"
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!