package to move and manage folders?

Hi,

I'm looking for a package that will allow me to configure some rules for moving folders and then watch a folder and automatically move folders or files that match rules to a certain other directory. Does something like this exist?

The use case is that I have data being saved to a single directory by other devices, and then I would like to reorganize it based on the file or folder name.

Or anyone have any other ideas of how to do this?

23 points · 9 comments · view on lemmy.world

9 Comments

nous@programming.dev · 7 pts · 3y (1 reply)

inotifywait or watchexec can both watch a directory for changes then execute anything you want.

corsicanguppy@lemmy.ca · 1 pts · 3y

inotifywait or watchexec

Excellent suggestion.

Sulinstajn@lemmy.ml · 3 pts · 3y

You can use find utility for that. I'm not at Linux machine right now, so maybe I can make mistake in commands, but something like this should work:

find /path/to/data/folder -name "type1name" -exec mv -t /path/to/dest/folder {} +

In this example, command find every file containing "type1name" in its name in folder /path/to/data/folder and move it into /path/to/dest/folder.

So if you have folder "~/data/all_data" containing files like "temperature_2023-06-30.csv", " temperature_2023-06-29.csv", "power_2023-06-30.csv" and "power_2023-06-29.csv", do:

mkdir ~/data/temperature

mkdir ~/data/power

find ~/data/all_data -name "temperature*" -exec mv -t ~/data/temperature {} +

find ~/data/all_data -name "power*" -exec mv -t ~/data/ {} +

More, you can tweak it into for examplee filtering according to current date and run that script every day.

RandomLegend@lemmy.dbzer0.com · 2 pts · 3y

Best I can think of would be a shell script combined with Cron.

But I'd love see alternatives. Ideal with a gui imo

INeedMana@lemmy.world · 1 pts · 3y

I guess that there should be some tool exactly for that but I couldn't find it quickly

  • You might want to take a look at filebeat, maybe that will fit your use-case. I take the part "automatically move folders or files that match rules to a certain other directory" verbatim and think it's not. Filebeat is rather to ingest logs and stream these elsewhere
  • you could configure rules for your files in logrotate but it can only be executed hourly
  • or just write a bash function/script that does the move/decides where to move the file to (executing logrotate should work too) and use one of these:
voluntaryexilecat@lemmy.dbzer0.com · 1 pts · 3y

systemd-path is the cleanest and most portable solution. You define a path service to watch your directory for changes and trigger another service to perform certain actions then. It uses inotify.

https://man.archlinux.org/man/systemd.path.5.en

Here is a full example from our currently so beloved redhat: https://www.redhat.com/sysadmin/introduction-path-units

infinitegoose@chiral.stream · 1 pts · 3y

If you don't find the application you're looking for maybe you can write a bash script that runs on a Cron job. It's possible if you're just talking about file/folder names