Sponsored Content
Top Forums Shell Programming and Scripting HELP on checking for directory or symbolic link Post 302694929 by newbie_01 on Friday 31st of August 2012 05:38:01 PM
Old 08-31-2012
Hi pamu,

Just tried and got the same result.

Code:
/tmp$: cat x.ksh
#!/bin/ksh

for checkdir in dir*
do
   echo "Checking ${checkdir}"

   if [[ -d "${checkdir}" ]] ; then
      echo "... ${checkdir} is a directory"
   elif [[ -h "${checkdir}" ]] ; then
      echo "... ${checkdir} is a symbolic link"
   fi
done
/tmp$: ls -ltrd dir*
drwxr-x--x   2 oracle   dba         4096 Aug 31 23:42 dir1
drwxr-x--x   2 oracle   dba         4096 Aug 31 23:42 dir2
lrwxrwxrwx   1 oracle   dba            4 Aug 31 23:43 dir3 -> /tmp
/tmp$: ./x.ksh
Checking dir1
... dir1 is a directory
Checking dir2
... dir2 is a directory
Checking dir3
... dir3 is a directory
/tmp$:

Also tried CarloM's suggestion and same problem.

---------- Post updated at 04:38 PM ---------- Previous update was at 04:27 PM ----------

Quote:
Originally Posted by CarloM
You could just test for a link first.
Hi CarloM,

Tried your suggestion, unfortunately, now it goes like below:

Code:
tmp $: ls -ltrd dir*
drwxr-x--x   2 oracle   dba         4096 Aug 31 23:42 dir1
drwxr-x--x   2 oracle   dba         4096 Aug 31 23:42 dir2
lrwxrwxrwx   1 oracle   dba            4 Aug 31 23:43 dir3 -> /tmp
tmp $: cat y.ksh
#!/bin/ksh

for checkdir in dir*
do
   echo "Checking ${checkdir}"

   if [[ -h "${checkdir}" ]] ; then
      echo "... ${checkdir} is a directory"
   elif [[ -d "${checkdir}" ]] ; then
      echo "... ${checkdir} is a symbolic link"
   fi
done
tmp $: cat z.ksh
#!/bin/ksh

for checkdir in dir*
do
   echo "Checking ${checkdir}"

   if [[ -L "${checkdir}" ]] ; then
      echo "... ${checkdir} is a directory"
   elif [[ -d "${checkdir}" ]] ; then
      echo "... ${checkdir} is a symbolic link"
   fi
done
tmp $: ./y.ksh
Checking dir1
... dir1 is a symbolic link
Checking dir2
... dir2 is a symbolic link
Checking dir3
... dir3 is a directory
tmp $: ./z.ksh
Checking dir1
... dir1 is a symbolic link
Checking dir2
... dir2 is a symbolic link
Checking dir3
... dir3 is a directory
tmp $:

 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

symbolic Link

question abt symbolic link ... i'm doing the following ... ln -s x.sh ./scripts/y.sh and cat ./scripts/y.sh it is giving following error cat: cannot open y.sh Any reason u an think of ? But it is working fine when i goto scripts directory and cretae the symbolic link. ... (1 Reply)
Discussion started by: bhargav
1 Replies

2. UNIX for Dummies Questions & Answers

need some info about symbolic link and hard link

hello folks how y'all doin well i have some questions about symbolic link and hard link hope some one answer me i open terminal and join as root and i wrote ln -s blah blah then i wrote ls i see red file called blah blah but didn't understand what is this can some one explain and... (2 Replies)
Discussion started by: detective linux
2 Replies

3. Solaris

How to copy a symbolic link

Hi I am trying to find a copy command that will copy a symbolic link itself and not what the link is actually pointing to. I am trying to copy a directory that has some symbolic links within it in IBM AIX unix this is achieved using cp -prh <source dir> <target> the 'h' flag is a hard copy... (3 Replies)
Discussion started by: jimthompson
3 Replies

4. UNIX for Advanced & Expert Users

Any risk in chging /etc/conf/pack.d directory symbolic link?

We are migrating off an unsupported Stratus Continuum Model 418 PA-RISC running FTX 3.3.0. We're trying to hang on as long as possible, but we're down to 2.8% free in /, so need to free up some space until we're ready to migrate our DB. Currently /etc/conf/pack.d is symbolically linked to... (0 Replies)
Discussion started by: kgert
0 Replies

5. Shell Programming and Scripting

symbolic link

Hi, i am trying to create sym links on sles 11 , but it seems i am doing something wrong. oracle@tests:/u01/app/oracle/oradata/ACIS> pwd /u01/app/oracle/oradata/ACIS oracle@tests:/u01/app/oracle/oradata/ACIS> ln -s /db/ACIS/dbase/dbf/ /u01/app/oracle/oradata/ACIS/... (2 Replies)
Discussion started by: tonijel
2 Replies

6. Shell Programming and Scripting

Symbolic Link Help

Hello All, This may be a silly question to some but I am really stuck. Is there a way to reverse the following; sudo rm /bin/sh sudo ln -s /bin/bash /bin/sh It was part of a driver compile/installation procedure by Digi for Ubuntu stating that dash isn't supported and a symbolic link... (2 Replies)
Discussion started by: LAVco
2 Replies

7. UNIX for Dummies Questions & Answers

Symbolic link for an existing directory

Hi , i am trying to make a symbolic link for an existing directory, but i am facng some problems regarding the usage of command. If there is no directory i can make a symbolic link, but for an existing directory i am not able to. can anyone post me the exact usage if we already have the... (1 Reply)
Discussion started by: sahasra
1 Replies

8. Shell Programming and Scripting

ls on a symbolic link

Hi all, Can anyone please confirm if the command below is the only way that I can get what the symbolic link is set to? mnlxd110(oracle)/db/posd2/dba$: ls -l | grep "^l" lrwxrwxrwx 1 oracle dba 28 Aug 9 2011 bdump -> diag/rdbms/posp1/posp1/trace mnlxd110(oracle)/db/posd2/dba$:... (7 Replies)
Discussion started by: newbie_01
7 Replies

9. UNIX for Dummies Questions & Answers

[Solved] Symbolic link not allowed or link target not accessible

Hi everybody, I read about treads realted to this issue but they did not resovle issue given below. Please help me resolve issue given below I have html file under /srv/www/htdocs/actual_folder ls actual_folder/ test.html and following link works... (0 Replies)
Discussion started by: newbielgn
0 Replies

10. UNIX for Dummies Questions & Answers

Symbolic link

Hi, trying to understand more about symblic link, when I compiled a program called "match" in one folder ~/downloadsoftware/I want this program to be accessible like a system command by putting a symbolic link in /usr/bin/ Not by setting the $PATH method in .bashrc at this time. What I did is:... (4 Replies)
Discussion started by: yifangt
4 Replies
DirCompare(3pm) 					User Contributed Perl Documentation					   DirCompare(3pm)

NAME
File::DirCompare - Perl module to compare two directories using callbacks. SYNOPSIS
use File::DirCompare; # Simple diff -r --brief replacement use File::Basename; File::DirCompare->compare($dir1, $dir2, sub { my ($a, $b) = @_; if (! $b) { printf "Only in %s: %s ", dirname($a), basename($a); } elsif (! $a) { printf "Only in %s: %s ", dirname($b), basename($b); } else { print "Files $a and $b differ "; } }); # Version-control like Deleted/Added/Modified listing my (@listing, @modified); # use closure to collect results File::DirCompare->compare('old_tree', 'new_tree', sub { my ($a, $b) = @_; if (! $b) { push @listing, "D $a"; } elsif (! $a) { push @listing, "A $b"; } else { if (-f $a && -f $b) { push @listing, "M $b"; push @modified, $b; } else { # One file, one directory - treat as delete + add push @listing, "D $a"; push @listing, "A $b"; } } }); DESCRIPTION
File::DirCompare is a perl module to compare two directories using a callback, invoked for all files that are 'different' between the two directories, and for any files that exist only in one or other directory ('unique' files). File::DirCompare has a single public compare() method, with the following signature: File::DirCompare->compare($dir1, $dir2, $sub, $opts); The first three arguments are required - $dir1 and $dir2 are paths to the two directories to be compared, and $sub is the subroutine reference called for all unique or different files. $opts is an optional hashref of options - see OPTIONS below. The provided subroutine is called for all unique files, and for every pair of 'different' files encountered, with the following signature: $sub->($file1, $file2) where $file1 and $file2 are the paths to the two files. For 'unique' files i.e. where a file exists in only one directory, the subroutine is called with the other argument 'undef' i.e. for: $sub->($file1, undef) $sub->(undef, $file2) the first indicates $file1 exists only in the first directory given ($dir1), and the second indicates $file2 exists only in the second directory given ($dir2). OPTIONS The following optional arguments are supported, passed in using a hash reference after the three required arguments to compare() e.g. File::DirCompare->compare($dir1, $dir2, $sub, { cmp => $cmp_sub, ignore_unique => 1, }); cmp By default, two files are regarded as different if their contents do not match (tested with File::Compare::compare). That default behaviour can be overridden by providing a 'cmp' subroutine to do the file comparison, returning zero if the two files are equal, and non-zero if not. E.g. to compare using modification times instead of file contents: File::DirCompare->compare($dir1, $dir2, $sub, { cmp => sub { -M $_[0] <=> -M $_[1] }, }); ignore_cmp If you want to see all corresponding files, not just 'different' ones, set the 'ignore_cmp' flag to tell File::DirCompare to skip its file comparison checks i.e. File::DirCompare->compare($dir1, $dir2, $sub, { ignore_cmp => 1 }); ignore_unique If you want to ignore files that only exist in one of the two directories, set the 'ignore_unique' flag i.e. File::DirCompare->compare($dir1, $dir2, $sub, { ignore_unique => 1 }); SEE ALSO
File::Dircmp, which provides similar functionality (and whose directory walking code I've adapted for this module), but a simpler reporting-only interface, something like the first example in the SYNOPSIS above. AUTHOR AND CREDITS
Gavin Carr <gavin@openfusion.com.au> Thanks to Robin Barker for a bug report and fix for glob problems with whitespace. COPYRIGHT AND LICENSE
Copyright 2006-2007 by Gavin Carr. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.10.1 2010-03-02 DirCompare(3pm)
All times are GMT -4. The time now is 04:46 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy