Remove symlink and target


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Remove symlink and target
# 1  
Old 06-15-2015
Remove symlink and target

i would like to remove a directory and also symlink target inside.

Code:
my_directory
-- file1 -> /targetpath/file1
-- file2 -> /targetpath/file2

rm -rf my_directory will not remove symlink target.
rm -rf "`readlink -f file1`" will only remove target if specifying the symlink is specified

i'm looking for 1 line command with removing directory as well as symlink target.

Last edited by Don Cragun; 06-15-2015 at 05:12 AM.. Reason: Add CODE and ICODE tags.
# 2  
Old 06-15-2015
Test with the following and remove echos if it does what you require
Code:
 for i in my_directory/* ; do if [ -L $i ] ; then echo rm $(readlink $i) ; fi done; echo rm -r my_directory

# 3  
Old 06-15-2015
Quote:
Originally Posted by Skrynesaver
Test with the following and remove echos if it does what you require
Code:
 for i in my_directory/* ; do if [ -L $i ] ; then echo rm $(readlink $i) ; fi done; echo rm -r my_directory

Note that rm -r my_directory will remove the entire file hierarchy rooted in my_directory, but the for loop will only look for symlinks in my_directory; not for symlinks in subdirectories of my_directory.

Note also that symlinks can contain absolute pathnames or relative pathnames. If a symlink contains a relative pathname, rm "$(redline $i)" won't work unless you execute that command while your current working directory is the directory in which the symlink is located.

In the example given, all of the symlinks contain absolute pathnames and the symlinks shown only appear in the named directory; so Skrynesaver's suggestion should work fine for the given example. But, if the OP's real world conditions are different, the code will need to be more complex.
This User Gave Thanks to Don Cragun For This Post:
# 4  
Old 06-15-2015
It is risky to remove symlink targets! Imagine there's a symlink to /etc ...!
The following checks the link target to have at least two /. But e.g. a link to /etc/passwd would still delete /etc/passwd.
Code:
find my_directory -type l |
while IFS="" read -r fname
do
  ltarget=$(readlink "$fname")
  case $ltarget in
  */?*/?*) (cd "$(dirname "$fname")" && rm -r "$ltarget");;
  esac
done
rm -rf my_directory


Last edited by MadeInGermany; 06-15-2015 at 09:11 AM.. Reason: dirname not basename
# 5  
Old 06-15-2015
I would worry that someone could create a link in error to something critical, e.g. You have a directory called /development and someone manages to chop off the end of their command
Code:
ln -s dev /dev

As someone who has moved /dev by accident, I can confirm that the results are rather difficult to deal with. We managed to follow the trace of our job and put it back, but you are looking to remove files.

I would be very wary of letting this run as a script.

Collect the details for sure, but let a human check them before taking action.


Just my thoughts,
Robin
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Symlink

I know how to create a symlink but I am getting an error message that the file already exists. Also, my symlink doesn't point from target directory to the path correctly, Here is an example of the path to my folder structure path: cd /wkspce/wff/DEV/jobs/DEL the folder structure is: ... (3 Replies)
Discussion started by: dellanicholson
3 Replies

2. Shell Programming and Scripting

Symlink creation

I am trying to setup my plex server to use symlinks rather than host the movie files. in my storage directory, i have both movies(some in subdirectory of the name and some just in the parent directory) and tvshows, which have subdirectories for each season, which contains the episodes i would... (3 Replies)
Discussion started by: bandion
3 Replies

3. HP-UX

After adding new iscsi target port, still the session state of that target port is showing offline

Hi, I wanted to configure new iscsi port on HPUX system, i added the target port address and configured it, once done, went to array side and searched for that host iqn number , but was nt able to find the same, came to host, then when i ran "iscsiutil -pVS" command it gave me below result ... (0 Replies)
Discussion started by: Vinay Kumar D
0 Replies

4. Ubuntu

Creating conditional symlink

Hi All, Is there any way to create a symlink that will point to last 1000 line of a log file. My symlink will always point to "tail -1000 logfile". This can be achieved by writing a script and scheduling with high frequency, but I am looking for some other alternatives. Please let me know... (8 Replies)
Discussion started by: sussus2326
8 Replies

5. Red Hat

how to hide the path users on the symlink.

Hello, can someone please suggest or is it possible to hide the path for the link from viewing it from remote users. for examples. as root user login #ls -l lrwxrwxrwx 1 root root 43 Oct 2 16:05 sftpdata -> /data/sftphome/sftpuser1/sftpdata/ #pwd /home/user1 # when user1 logs... (4 Replies)
Discussion started by: bobby320
4 Replies

6. Shell Programming and Scripting

ln -s creates symlink in symlink, if [ -f ... ] says file that exists doesn't exist

Hi Forums, I got a little problem, I made a few modifications to the code of the launch script of a testing server(minecraft) and now updating is broken aswell as the automatic directory creation. These Lines somehow create an endless symlink that refers to itself and I don't know how to fix... (0 Replies)
Discussion started by: Xaymar
0 Replies

7. Shell Programming and Scripting

how to remove the target of the symbol link in a shell script

I have a target directory, there are some files and directories in "target_dir". I have a symbol link: my_link -> <target_dir> The target directory name is NOT known to the script (because it is varying), while the link name is always fixed. In a shell script, how to remove both the... (1 Reply)
Discussion started by: princelinux
1 Replies

8. UNIX for Dummies Questions & Answers

how to copy a file without remove the contents of the target file?

Hello every body, Kindly support me to "copy a file without remove the contents of the target file" Thanks in advance. :) Ahmed Amer Cairo,Egypt (2 Replies)
Discussion started by: ahmedamer12
2 Replies

9. Solaris

symlink on link file

Hi all, I want to create a symlink on a link file, i mean, there is a file which is actually a symlink of some version. Now i want to create one more symlink on that link file. EX: there is a file: uat -> version prod -> version Now i want to create one more link on these 'uat' and... (1 Reply)
Discussion started by: raghu.iv85
1 Replies

10. UNIX for Dummies Questions & Answers

creating symlink

hi... I have a folder<abc> under /root folder. I want to create a symlink such that when i click on folder<abc> under root, should display my home folder (home/krish). Immediate inputs appreciated..... (1 Reply)
Discussion started by: rama.honge
1 Replies
Login or Register to Ask a Question