rm to remove a dir, any symlinks, AND symlink destinations? [duplicate]

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
3
down vote

favorite













This question already has an answer here:



  • How to remove the directory a symbolic link links to plus the symbolic link?

    3 answers



I have two directories: /all/origins/ & /all/links/.



Everything in links/ points individually to something in origins/, but not everything in origins/ is linked in links/. (Squares, rectangles & categorical hierarchy, get i?) These are symlinks (ln -s), not hard links.



Everything in 1. links/ needs to be deleted, along with 2. the symlink destinations in origins/ (not knowing whether they are in origins/), and 3. the links/ directory itself.



What rm Unix command should I type to remove both the entire links/ directory AND any symlinked destinations symlinked to in origins/?



I'm looking for something maybe like: rm -R /all/links or rm -r --follow-all-ln /all/links.



If an rm command with parameters will not do the job, please say so explicitly as that is my preference and implicit in the title (can Unix & Linux do this via rm without a do loop?—only if that won't work, then please state so and explain what do loop.)










share|improve this question















marked as duplicate by RalfFriedl, G-Man, elbarna, Thomas, schily Nov 23 at 13:46


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.










  • 1




    In third line I think you want to say links/ instead of origins/.
    – Debian_yadav
    Nov 22 at 23:23











  • Possible and related, but not coterminous. My question is about removing the directory itself and such links with it. This near-dup removes only a file and only one at a time, specifically. But, it is related, so thanks.
    – Jesse Steele
    Nov 23 at 1:43














up vote
3
down vote

favorite













This question already has an answer here:



  • How to remove the directory a symbolic link links to plus the symbolic link?

    3 answers



I have two directories: /all/origins/ & /all/links/.



Everything in links/ points individually to something in origins/, but not everything in origins/ is linked in links/. (Squares, rectangles & categorical hierarchy, get i?) These are symlinks (ln -s), not hard links.



Everything in 1. links/ needs to be deleted, along with 2. the symlink destinations in origins/ (not knowing whether they are in origins/), and 3. the links/ directory itself.



What rm Unix command should I type to remove both the entire links/ directory AND any symlinked destinations symlinked to in origins/?



I'm looking for something maybe like: rm -R /all/links or rm -r --follow-all-ln /all/links.



If an rm command with parameters will not do the job, please say so explicitly as that is my preference and implicit in the title (can Unix & Linux do this via rm without a do loop?—only if that won't work, then please state so and explain what do loop.)










share|improve this question















marked as duplicate by RalfFriedl, G-Man, elbarna, Thomas, schily Nov 23 at 13:46


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.










  • 1




    In third line I think you want to say links/ instead of origins/.
    – Debian_yadav
    Nov 22 at 23:23











  • Possible and related, but not coterminous. My question is about removing the directory itself and such links with it. This near-dup removes only a file and only one at a time, specifically. But, it is related, so thanks.
    – Jesse Steele
    Nov 23 at 1:43












up vote
3
down vote

favorite









up vote
3
down vote

favorite












This question already has an answer here:



  • How to remove the directory a symbolic link links to plus the symbolic link?

    3 answers



I have two directories: /all/origins/ & /all/links/.



Everything in links/ points individually to something in origins/, but not everything in origins/ is linked in links/. (Squares, rectangles & categorical hierarchy, get i?) These are symlinks (ln -s), not hard links.



Everything in 1. links/ needs to be deleted, along with 2. the symlink destinations in origins/ (not knowing whether they are in origins/), and 3. the links/ directory itself.



What rm Unix command should I type to remove both the entire links/ directory AND any symlinked destinations symlinked to in origins/?



I'm looking for something maybe like: rm -R /all/links or rm -r --follow-all-ln /all/links.



If an rm command with parameters will not do the job, please say so explicitly as that is my preference and implicit in the title (can Unix & Linux do this via rm without a do loop?—only if that won't work, then please state so and explain what do loop.)










share|improve this question
















This question already has an answer here:



  • How to remove the directory a symbolic link links to plus the symbolic link?

    3 answers



I have two directories: /all/origins/ & /all/links/.



Everything in links/ points individually to something in origins/, but not everything in origins/ is linked in links/. (Squares, rectangles & categorical hierarchy, get i?) These are symlinks (ln -s), not hard links.



Everything in 1. links/ needs to be deleted, along with 2. the symlink destinations in origins/ (not knowing whether they are in origins/), and 3. the links/ directory itself.



What rm Unix command should I type to remove both the entire links/ directory AND any symlinked destinations symlinked to in origins/?



I'm looking for something maybe like: rm -R /all/links or rm -r --follow-all-ln /all/links.



If an rm command with parameters will not do the job, please say so explicitly as that is my preference and implicit in the title (can Unix & Linux do this via rm without a do loop?—only if that won't work, then please state so and explain what do loop.)





This question already has an answer here:



  • How to remove the directory a symbolic link links to plus the symbolic link?

    3 answers







rm ln






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 25 at 4:14

























asked Nov 22 at 23:16









Jesse Steele

12717




12717




marked as duplicate by RalfFriedl, G-Man, elbarna, Thomas, schily Nov 23 at 13:46


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.






marked as duplicate by RalfFriedl, G-Man, elbarna, Thomas, schily Nov 23 at 13:46


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.









  • 1




    In third line I think you want to say links/ instead of origins/.
    – Debian_yadav
    Nov 22 at 23:23











  • Possible and related, but not coterminous. My question is about removing the directory itself and such links with it. This near-dup removes only a file and only one at a time, specifically. But, it is related, so thanks.
    – Jesse Steele
    Nov 23 at 1:43












  • 1




    In third line I think you want to say links/ instead of origins/.
    – Debian_yadav
    Nov 22 at 23:23











  • Possible and related, but not coterminous. My question is about removing the directory itself and such links with it. This near-dup removes only a file and only one at a time, specifically. But, it is related, so thanks.
    – Jesse Steele
    Nov 23 at 1:43







1




1




In third line I think you want to say links/ instead of origins/.
– Debian_yadav
Nov 22 at 23:23





In third line I think you want to say links/ instead of origins/.
– Debian_yadav
Nov 22 at 23:23













Possible and related, but not coterminous. My question is about removing the directory itself and such links with it. This near-dup removes only a file and only one at a time, specifically. But, it is related, so thanks.
– Jesse Steele
Nov 23 at 1:43




Possible and related, but not coterminous. My question is about removing the directory itself and such links with it. This near-dup removes only a file and only one at a time, specifically. But, it is related, so thanks.
– Jesse Steele
Nov 23 at 1:43










1 Answer
1






active

oldest

votes

















up vote
3
down vote



accepted










First take backup of your data in case something goes wrong.



What I understood is that you want to delete all the contents of /all/links/ directory and the file to which the links inside this directory are pointing.



There is no way to do this with a simple Unix command as you preferred, but it will work with a simple script.



#!/bin/bash

for i in /all/links/*
do
rm "$(readlink -f $i)"
rm "$i"
done

rmdir /all/links


As you said that all files inside /all/links/ are symbolic links so there is no need to check each value of i whether it is a link or not.






share|improve this answer






















  • Is there no way to do this with a simple Unix command? If so, I accept this as the answer and please approve my edit.
    – Jesse Steele
    Nov 23 at 3:21






  • 1




    The backticks in the last line of the script should be quotes, right? I guess you don't want command substitution there.
    – fra-san
    Nov 23 at 8:32










  • @fra-san ohhh, yes thanks.
    – Debian_yadav
    Nov 23 at 8:53










  • @JesseSteele the script is short enough that you could write it in a single line of shell... for f in /all/links/*; do rm "$(readlink -f $f)"; rm "$f"; done; rmdir /all/links. If you need it possibly more than once... go for the script as script.
    – planetmaker
    Nov 23 at 9:39











  • Thank you, make it an answer and I will up vote it for usefulness, but, honestly, it is still not a simple Unix command (part of the question), but a script on a single line
    – Jesse Steele
    Nov 23 at 9:41

















1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
3
down vote



accepted










First take backup of your data in case something goes wrong.



What I understood is that you want to delete all the contents of /all/links/ directory and the file to which the links inside this directory are pointing.



There is no way to do this with a simple Unix command as you preferred, but it will work with a simple script.



#!/bin/bash

for i in /all/links/*
do
rm "$(readlink -f $i)"
rm "$i"
done

rmdir /all/links


As you said that all files inside /all/links/ are symbolic links so there is no need to check each value of i whether it is a link or not.






share|improve this answer






















  • Is there no way to do this with a simple Unix command? If so, I accept this as the answer and please approve my edit.
    – Jesse Steele
    Nov 23 at 3:21






  • 1




    The backticks in the last line of the script should be quotes, right? I guess you don't want command substitution there.
    – fra-san
    Nov 23 at 8:32










  • @fra-san ohhh, yes thanks.
    – Debian_yadav
    Nov 23 at 8:53










  • @JesseSteele the script is short enough that you could write it in a single line of shell... for f in /all/links/*; do rm "$(readlink -f $f)"; rm "$f"; done; rmdir /all/links. If you need it possibly more than once... go for the script as script.
    – planetmaker
    Nov 23 at 9:39











  • Thank you, make it an answer and I will up vote it for usefulness, but, honestly, it is still not a simple Unix command (part of the question), but a script on a single line
    – Jesse Steele
    Nov 23 at 9:41














up vote
3
down vote



accepted










First take backup of your data in case something goes wrong.



What I understood is that you want to delete all the contents of /all/links/ directory and the file to which the links inside this directory are pointing.



There is no way to do this with a simple Unix command as you preferred, but it will work with a simple script.



#!/bin/bash

for i in /all/links/*
do
rm "$(readlink -f $i)"
rm "$i"
done

rmdir /all/links


As you said that all files inside /all/links/ are symbolic links so there is no need to check each value of i whether it is a link or not.






share|improve this answer






















  • Is there no way to do this with a simple Unix command? If so, I accept this as the answer and please approve my edit.
    – Jesse Steele
    Nov 23 at 3:21






  • 1




    The backticks in the last line of the script should be quotes, right? I guess you don't want command substitution there.
    – fra-san
    Nov 23 at 8:32










  • @fra-san ohhh, yes thanks.
    – Debian_yadav
    Nov 23 at 8:53










  • @JesseSteele the script is short enough that you could write it in a single line of shell... for f in /all/links/*; do rm "$(readlink -f $f)"; rm "$f"; done; rmdir /all/links. If you need it possibly more than once... go for the script as script.
    – planetmaker
    Nov 23 at 9:39











  • Thank you, make it an answer and I will up vote it for usefulness, but, honestly, it is still not a simple Unix command (part of the question), but a script on a single line
    – Jesse Steele
    Nov 23 at 9:41












up vote
3
down vote



accepted







up vote
3
down vote



accepted






First take backup of your data in case something goes wrong.



What I understood is that you want to delete all the contents of /all/links/ directory and the file to which the links inside this directory are pointing.



There is no way to do this with a simple Unix command as you preferred, but it will work with a simple script.



#!/bin/bash

for i in /all/links/*
do
rm "$(readlink -f $i)"
rm "$i"
done

rmdir /all/links


As you said that all files inside /all/links/ are symbolic links so there is no need to check each value of i whether it is a link or not.






share|improve this answer














First take backup of your data in case something goes wrong.



What I understood is that you want to delete all the contents of /all/links/ directory and the file to which the links inside this directory are pointing.



There is no way to do this with a simple Unix command as you preferred, but it will work with a simple script.



#!/bin/bash

for i in /all/links/*
do
rm "$(readlink -f $i)"
rm "$i"
done

rmdir /all/links


As you said that all files inside /all/links/ are symbolic links so there is no need to check each value of i whether it is a link or not.







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 23 at 8:53

























answered Nov 22 at 23:30









Debian_yadav

1,3153922




1,3153922











  • Is there no way to do this with a simple Unix command? If so, I accept this as the answer and please approve my edit.
    – Jesse Steele
    Nov 23 at 3:21






  • 1




    The backticks in the last line of the script should be quotes, right? I guess you don't want command substitution there.
    – fra-san
    Nov 23 at 8:32










  • @fra-san ohhh, yes thanks.
    – Debian_yadav
    Nov 23 at 8:53










  • @JesseSteele the script is short enough that you could write it in a single line of shell... for f in /all/links/*; do rm "$(readlink -f $f)"; rm "$f"; done; rmdir /all/links. If you need it possibly more than once... go for the script as script.
    – planetmaker
    Nov 23 at 9:39











  • Thank you, make it an answer and I will up vote it for usefulness, but, honestly, it is still not a simple Unix command (part of the question), but a script on a single line
    – Jesse Steele
    Nov 23 at 9:41
















  • Is there no way to do this with a simple Unix command? If so, I accept this as the answer and please approve my edit.
    – Jesse Steele
    Nov 23 at 3:21






  • 1




    The backticks in the last line of the script should be quotes, right? I guess you don't want command substitution there.
    – fra-san
    Nov 23 at 8:32










  • @fra-san ohhh, yes thanks.
    – Debian_yadav
    Nov 23 at 8:53










  • @JesseSteele the script is short enough that you could write it in a single line of shell... for f in /all/links/*; do rm "$(readlink -f $f)"; rm "$f"; done; rmdir /all/links. If you need it possibly more than once... go for the script as script.
    – planetmaker
    Nov 23 at 9:39











  • Thank you, make it an answer and I will up vote it for usefulness, but, honestly, it is still not a simple Unix command (part of the question), but a script on a single line
    – Jesse Steele
    Nov 23 at 9:41















Is there no way to do this with a simple Unix command? If so, I accept this as the answer and please approve my edit.
– Jesse Steele
Nov 23 at 3:21




Is there no way to do this with a simple Unix command? If so, I accept this as the answer and please approve my edit.
– Jesse Steele
Nov 23 at 3:21




1




1




The backticks in the last line of the script should be quotes, right? I guess you don't want command substitution there.
– fra-san
Nov 23 at 8:32




The backticks in the last line of the script should be quotes, right? I guess you don't want command substitution there.
– fra-san
Nov 23 at 8:32












@fra-san ohhh, yes thanks.
– Debian_yadav
Nov 23 at 8:53




@fra-san ohhh, yes thanks.
– Debian_yadav
Nov 23 at 8:53












@JesseSteele the script is short enough that you could write it in a single line of shell... for f in /all/links/*; do rm "$(readlink -f $f)"; rm "$f"; done; rmdir /all/links. If you need it possibly more than once... go for the script as script.
– planetmaker
Nov 23 at 9:39





@JesseSteele the script is short enough that you could write it in a single line of shell... for f in /all/links/*; do rm "$(readlink -f $f)"; rm "$f"; done; rmdir /all/links. If you need it possibly more than once... go for the script as script.
– planetmaker
Nov 23 at 9:39













Thank you, make it an answer and I will up vote it for usefulness, but, honestly, it is still not a simple Unix command (part of the question), but a script on a single line
– Jesse Steele
Nov 23 at 9:41




Thank you, make it an answer and I will up vote it for usefulness, but, honestly, it is still not a simple Unix command (part of the question), but a script on a single line
– Jesse Steele
Nov 23 at 9:41


Popular posts from this blog

How to check contact read email or not when send email to Individual?

Displaying single band from multi-band raster using QGIS

How many registers does an x86_64 CPU actually have?