I need to make a list of all direct symbolic links in a directory, i.e. symbolic links that point to another file which is not a symbolic link.
I tried to do it this way:
for i in $(ls -1A); do
first_type=$(ls -l $i | cut -b 1)
if [ $first_type == 'l' ]
then
next=$(ls -l $i | awk '{print $NF}')
next_type=$(ls -l $next | cut -b 1)
if [ $next_type != 'l' ]
then
#Some code
fi
fi
done
But in this case, the script skips files whose names have spaces/tabs/newlines (including at the start and end of the file name).
Is there any way to solve this?
I working on Solaris 10. There is no readlink
or stat
command. The find
command does not have -printf
.
Best Answer
I can provide you with a perl snippet to do this for you:
If you save that as
/usr/local/bin/if-link
and make it executable (chmod a+x /usr/local/bin/if-link
) you can use it like thisTo incorporate it in another script, you can use it as a one-liner