xargs rm -rf
?
Linux Mint
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:
where is a current or past release. Here's an example using release 21.1 'Vera':
https://linuxmint.com/start/vera/
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
Additionally, for safety you can add the i
flag to be promoted to confirm each removal. It may be tedious depending on the number of files, but it may also save you from deleting files and/or directories you don't want deleted.
For clarity, be careful with that -rf
combo of flags. As another commenter mentioned, -r
means recursive, which will delete directories and their contents. You're talking about deleting files. If you do not want directories and their contents removed, DO NOT use the -r
flag.
Thank you for the tips, but 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
When you run the command without the xargs
bit, like this:
for f in \*; do ls $f | tail -n 2; done\
,
Does the output give you the full file path, or just the file names?
The full file path will look something like:
/dir1/dir2/actual-file
And of course the file name would just be:
some-file
If you're getting just the file name, that's the problem. Unless you're in the directory with the file you wish to delete, rm
needs the full path.
Edit: grammar
this will break pretty badly if you have filenames with spaces or newlines in them. so to make this actually robust, you now get to learn about find -print0
, xargs -0
, and why you always, always need to add ""
around variables in bash.
Can find be used with tail?
Thank you for the tips, but 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
find can be used with tail, but if you're doing nul-delimited stuff (-print0, -0), then you'll want tail to run in nul-delimited mode too (-z apparently).
or you can say "fuck files with newlines in them, i aint supporting that shit", and then you just need the "" to still support filenames with spaces.
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
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