this post was submitted on 31 Jan 2025
7 points (100.0% liked)

Linux Mint

1875 readers
14 users here now

Linux Mint is a free Linux-based operating system designed for use on desktop and laptop computers.

Want to see the latest news from the blog? Set the Firefox homepage to:

linuxmint.com/start/

where is a current or past release. Here's an example using release 21.1 'Vera':

https://linuxmint.com/start/vera/

founded 3 years ago
MODERATORS
 

As the title says, I just started with linux mint and am falling in love with bash scripts ๐Ÿ˜ Actually I'm not sure if it's considered a script, but I want to delete the last 2 files in all subfolders in a folder. So far I've (after great effort) got the terminal to list the files, but I want to delete them. Here is how I get them listed:

for f in *; do ls $f | tail -n 2; done

All their names come satisfyingly up in the terminal. Now what? I tried adding | xargs rm but that didn't delete them. I also tried something with find command but that didn't work either. Some folders have 3 items, so I want to delete #2 and 3. Some folders have 15 items so I want to delete #14 and 15. Folders are arranged by name, so it's always the last 2 that I want to delete.

It's frustrating to be sooooo clooooose, but also very fun. Any help is appreciated!



EDIT: Thanks for the awesome help guys! The next part of this is to move all the .html files into one folder (named "done"), prepending their name with an integer. So far I got:

n=1; for f in *; do find ./"$f" -type f | sort | xargs mv done/"$n$f"; n=$((n+1)); done

but that is... not really doing anything. The closest I have gotten so far is some error like

mv: Missing destination file operand

Any help is again appreciated!

you are viewing a single comment's thread
view the rest of the comments
[โ€“] [email protected] 1 points 11 hours ago (14 children)
[โ€“] [email protected] 3 points 10 hours ago (13 children)

for f in *; do ls $f | tail -n 2 | xargs rm -rf; done

You mean like that? rm -rf followed by a question mark does not inspire confidence XD

[โ€“] [email protected] 1 points 10 hours ago (1 children)

yes. that's what I suggested.. the question mark was there to ask you if you tried that :-D I'm at work, pretty busy :-D I hope you read the rm manual.

-r means recursive
-f means force, which will delete the files/directories without interaction

[โ€“] [email protected] 1 points 5 hours ago

Oh I see, lol. Now I'm getting "Cannot remove: No such file or directory" all the way down! The files are there, I see them, they come up in the terminal, but for some reason xargs rm does not want to delete them. When I put the -f flag, rm doesn't give an error but the files are still there! wtf

load more comments (11 replies)
load more comments (11 replies)