Automatically Organize Linux Files with n8n and Mistral AI

This workflow monitors a Linux directory for new files and smartly organizes them into folders using Mistral AI’s file categorization suggestions, saving you hours of manual sorting and reducing errors.
localFileTrigger
executeCommand
chainLlm
+4
Learn how to Build this Workflow with AI:
Workflow Identifier: 2070
NODES in Use: Local File Trigger, Execute Command, Set, If, LangChain, Mistral Cloud Chat Model, Split Out

Press CTRL+F5 if the workflow didn't load.

Visit through Desktop for Best experience

1. Opening Problem Statement

Meet Michael, a Linux systems administrator who manages a shared folder where his team frequently drops files for different projects. Every day, he spends at least an hour sifting through dozens of scattered files, moving each one to the right project folder. This tedious task leads to mistakes like misplaced files, missed deadlines due to file disorganization, and overall frustration.

Michael needs a reliable and automated way to keep this folder organized, especially since the volume of files continues to grow. If only he could have a smart assistant to watch the folder, sort files automatically, and create directories when needed. That’s exactly what this workflow using n8n and Mistral AI achieves.

2. What This Automation Does

This n8n workflow provides an end-to-end automated Linux file organizer. Here’s what happens when it runs:

  • Monitors a target Linux directory for any new files added, triggering the automation instantly.
  • Lists all files and folders at the directory’s root using Linux shell commands.
  • Parses this list to separate files from folders for processing.
  • Utilizes Mistral AI to intelligently suggest which files belong in which folders, and even proposes new folders if none are appropriate.
  • Executes shell commands to create suggested new folders and move files to their respective destinations.
  • Handles file naming conflicts by renaming files if necessary to avoid overwriting.

By automating these steps, the workflow saves Michael several hours a week, reduces human errors, and ensures a consistent file organization system.

3. Prerequisites ⚙️

  • n8n account or self-hosted instance: You can use the hosted n8n platform or run it yourself, especially since this workflow uses the Local File Trigger which requires access to your Linux filesystem. Self-hosting is recommended if you want direct filesystem access. Learn more about self-hosting with versatile providers like Hostinger.
  • Linux environment with the directory you want to monitor mounted or accessible by n8n (e.g., via Docker volume or host path mapping).
  • Mistral Cloud account and API credentials: for the AI-powered file categorization node.
  • Basic Linux knowledge: since shell commands are used to list files, create directories, and move files.

4. Step-by-Step Guide

Step 1: Set Up the Local File Trigger Node

Navigate to Nodes > Add Node > Core Nodes > Local File Trigger.

Configure it to monitor your target folder. For example: /home/node/host_mount/shared_drive.

Ensure “Events” is set to “add” and “Trigger On” is set to “folder” to react when new files appear.

You should see the node active and waiting for file additions in the folder.

Common Mistake: Forgetting to map or mount the host folder inside the n8n Docker container will cause the trigger never to fire.

Step 2: Pass Directory Variable for Commands

Add a Set node named Set Variables.

Assign a string variable named directory with the value {{ $('Local File Trigger').params.path }} to dynamically give the path of the monitored folder.

This enables the Execute Command node later to operate on the right folder.

Step 3: Use Execute Command to List Files and Folders

Add an Execute Command node called Get Files and Folders.

Use the following command, which lists files and folders separately:

ls -p {{ $json.directory }} | grep -v / || true; 
echo "==="; 
ls -p {{ $json.directory }} | grep / || true;

This lists all files first, then outputs “===”, then lists all folders.

Expected output: a string with file names, a separator, then folder names.

Step 4: Parse Output Into Files and Folders Arrays

Add a Set node named Files and Folders to Array.

Use expressions to split the raw command output into two arrays and clean filenames:

files = {{$json.stdout.split('===')[0].split('n').filter(item => !item.endsWith('Zone.Identifier')).compact()}}
folders = {{$json.stdout.split('===')[1].split('n').compact()}}

This helps us handle files and folders separately.

Step 5: Conditional Check for Files to Organize

Add an If node named If Has Target Files…

Set condition to check if the files array length is greater or equal to 1:

Condition: {{$json.files.length >= 1}}

This ensures processing only if there are files present.

Step 6: Use Mistral AI for Folder Suggestion

Add the Mistral Cloud Chat Model node with your API credentials.

Connect it to the next node named AI File Manager, a LangChain node configured with this prompt:

Here is the list of current files in the directory:
{{ $json.files.map(file => `* ${file}`).join('n') }}

Here is the list of current folders in the directory:
{{ $json.folders.length ? $json.folders.map(item => `* ${item}`).join('n') : 'There are currently no directories' }}

Group the current files using the filename as a hint and decide which of the current folders should they be moved to. If there are no current folders, then suggest a folder to be created.

If you can't decide which folder to put the file in, the file should be moved to the misc folder.

The AI returns structured JSON with folder names and corresponding files.

Step 7: Split AI Output into Individual Tasks

Add a Split Out node named Get Suggestions to List to break the array of folders and their files into individual items, allowing you to process each folder separately.

Step 8: Move Files Based on AI Suggestions

Add an Execute Command node named Move Files into Folders.

Use this shell script:

directory="{{ $('Set Variables').item.json.directory }}"
subdirectory="$directory/{{ $json.folder }}";
file_list="{{ $json.files.join(' ') }}";

# create subdirectory if not exists
mkdir -p $subdirectory;

# for each suggestion, move the file into the subdirectory.
# If the file in the subdirectory exists, rename by appending random string.
for filename in $file_list; do
    if [ -e "$subdirectory/$filename" ]; then
        mv "$directory/$filename-$RANDOM" -t $subdirectory;
    else
        mv "$directory/$filename" -t $subdirectory;
    fi
done

This safely organizes the files as suggested by Mistral AI.

Step 9: Activate and Test Your Workflow

Turn on your workflow in n8n.

Test by adding a new file to the monitored folder. The workflow should automatically organize it into the appropriate subfolder.

5. Customizations ✏️

  • Change Monitored Folder: In the Local File Trigger node, modify the path to any folder you want n8n to watch.
  • Adjust AI Model: In the Mistral Cloud Chat Model node, you can switch to different Mistral models such as mistral-small-7b to get different categorization behaviors.
  • Add File Type Filters: Add a Function or IF node after listing files to filter out certain file types if you only want to organize, say, PDFs or images.
  • Modify Move Behavior: Tweak the shell script in the Move Files into Folders node to add copy instead of move or add logging for audit trails.

6. Troubleshooting 🔧

Problem: “Local File Trigger node never fires when adding files.”
Cause: Folder path is not correctly mounted or accessible to n8n.
Solution: Verify your Docker volume mounts or direct filesystem permissions. Double-check the path in the trigger node matches exactly where files are added.

Problem: “AI suggestions are empty or malformed.”
Cause: Incorrect prompt formatting or API issues with Mistral Cloud.
Solution: Check API credentials for Mistral. Make sure the JSON schema matches the AI output parser node’s expectations.

Problem: “Files not moving as expected or overwritten.”
Cause: File name collisions or incorrect shell script paths.
Solution: Ensure the shell script handles renaming on conflicts as shown, and directory variables are correct.

7. Pre-Production Checklist ✅

  • Confirm that n8n has read/write access to the monitored folder and subfolders.
  • Test shell commands manually on the server to ensure they run without errors.
  • Verify your Mistral Cloud API credentials are valid and the model is accessible.
  • Run a dry test by adding a non-critical test file to the directory to observe workflow behavior.
  • Backup important files before initial runs to prevent accidental data loss.

8. Deployment Guide

Once tested successfully, activate the workflow by enabling it in the n8n editor’s top-right toggle.

Keep monitoring via the n8n execution logs to ensure the automation works as expected.

Consider setting up notifications or additional logging if you want alerts when the workflow runs or encounters errors.

9. FAQs

Q: Can I use this workflow on Windows systems?
A: This workflow is designed around Linux commands and filesystem paths; running it on Windows would require significant adaptation or a Linux VM environment.

Q: Does Mistral AI cost extra?
A: Mistral Cloud may have usage tiers or API credits; please check your plan to manage costs.

Q: Is my file data safe with this workflow?
A: The workflow processes files locally, but file data sent to Mistral AI for categorization may go through their cloud. Review their privacy policies accordingly.

10. Conclusion

By following this detailed guide, you have automated the tedious task of organizing Linux files using n8n and Mistral AI. You can now save hours weekly, reduce errors from manual filing, and maintain a consistently organized directory without lifting a finger.

Next, you might extend this project by adding notifications via email or Slack when files are moved, or automatically backing up sorted files to cloud storage like Google Drive.

Happy file managing and keep exploring n8n automation to simplify your daily workflows!

Related Workflows

Automate Viral UGC Video Creation Using n8n + Degaus (Beginner-Friendly Guide)

Learn how to automate viral UGC video creation using n8n, AI prompts, and Degaus. This beginner-friendly guide shows how to import, configure, and run the workflow without technical complexity.
Form Trigger
Google Sheets
Gmail
+37
Free

AI SEO Blog Writer Automation in n8n (Beginner Guide)

A complete beginner guide to building an AI-powered SEO blog writer automation using n8n.
AI Agent
Google Sheets
httpRequest
+5
Free

Automate CrowdStrike Alerts with VirusTotal, Jira & Slack

This workflow automates processing of CrowdStrike detections by enriching threat data via VirusTotal, creating Jira tickets for incident tracking, and notifying teams on Slack for quick response. Save hours daily by transforming complex threat data into actionable alerts effortlessly.
scheduleTrigger
httpRequest
jira
+5
Free

Automate Telegram Invoices to Notion with AI Summaries & Reports

Save hours on financial tracking by automating invoice extraction from Telegram photos to Notion using Google Gemini AI. This workflow extracts data, records transactions, and generates detailed spending reports with charts sent on schedule via Telegram.
lmChatGoogleGemini
telegramTrigger
notion
+9
Free

Automate Email Replies with n8n and AI-Powered Summarization

Save hours managing your inbox with this n8n workflow that uses IMAP email triggers, AI summarization, and vector search to draft concise replies requiring minimal review. Automate business email processing efficiently with AI guidance and Gmail integration.
emailReadImap
vectorStoreQdrant
emailSend
+12
Free

Automate Email Campaigns Using n8n with Gmail & Google Sheets

This n8n workflow automates personalized email outreach campaigns by integrating Gmail and Google Sheets, saving hours of manual follow-up work and reducing errors in email sequences. It ensures timely follow-ups based on previous email interactions, optimizing communication efficiency.
googleSheets
gmail
code
+5
Free