130
submitted 18 hours ago by cybercitizen4@lemm.ee to c/asklemmy@lemmy.ml
you are viewing a single comment's thread
view the rest of the comments
[-] anonymouse2@sh.itjust.works 7 points 17 hours ago

I recently learned to use a for loop on the command line to organize hundreds of files in a few seconds.

[-] makingStuffForFun@lemmy.ml 1 points 17 hours ago
[-] anonymouse2@sh.itjust.works 8 points 16 hours ago

Let's say, for example, you have a directory of files named x01-001; x01-002; x02-001; x02-002; x03-001... and so on.

I want to create subdirectories for each 'x' iteration and move each set to the corresponding subdirectory. My loop would look like this:

for i in {1..3}; do mkdir Data_x0$i && mv x0$i* Data_x0$i; done

I've also been using it if I need to rename large batches of files quickly.

[-] friend_of_satan@lemmy.world 5 points 14 hours ago

Check out rename

$ touch foo{1..5}.txt
$ rename -v 's/foo/bar/' foo*
foo1.txt renamed as bar1.txt
foo2.txt renamed as bar2.txt
foo3.txt renamed as bar3.txt
foo4.txt renamed as bar4.txt
foo5.txt renamed as bar5.txt
$ rename -v 's/\.txt/.text/' *.txt
bar1.txt renamed as bar1.text
bar2.txt renamed as bar2.text
bar3.txt renamed as bar3.text
bar4.txt renamed as bar4.text
bar5.txt renamed as bar5.text
$ rename -v 's/(.*).text/1234-$1.txt/' *.text
bar1.text renamed as 1234-bar1.txt
bar2.text renamed as 1234-bar2.txt
bar3.text renamed as 1234-bar3.txt
bar4.text renamed as 1234-bar4.txt
bar5.text renamed as 1234-bar5.txt
[-] 0_0j@lemmy.world 1 points 12 hours ago

SED combinator, you win ๐Ÿ™Œ

[-] tetris11@lemmy.ml 4 points 14 hours ago* (last edited 14 hours ago)

xargs is also fun, and assuming your for loop doesn't update anything out of the loop, is highly parallelizable

The equivalent of the same command, that handles 10 tasks concurrently, using %% as a variable placeholder.

seq 1 100 | xargs -I'%%' -P 10 sh -c 'mkdir Data_X0%% && mv x0%%* Data_X0%%;'

But for mass renaming files, dired along with rectangle-select and multicursors within Emacs is my goto.

this post was submitted on 21 Sep 2024
130 points (97.1% liked)

Asklemmy

43413 readers
1599 users here now

A loosely moderated place to ask open-ended questions

Search asklemmy ๐Ÿ”

If your post meets the following criteria, it's welcome here!

  1. Open-ended question
  2. Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
  3. Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
  4. Not ad nauseam inducing: please make sure it is a question that would be new to most members
  5. An actual topic of discussion

Looking for support?

Looking for a community?

~Icon~ ~by~ ~@Double_A@discuss.tchncs.de~

founded 5 years ago
MODERATORS