Sponsored Content
Top Forums Shell Programming and Scripting Help with Shell Script displaying Directories Post 302308875 by cfajohnson on Monday 20th of April 2009 01:05:13 PM
Old 04-20-2009
Quote:
Originally Posted by cjnd1988
I am new to shell programming and have an assignment question which requires me to list the contents of the present working directory in 4 column format and highlight any subdirectories.

Homework assignments are not permitted here, but maybe this will get you started:

Code:
unset files
n=0
for file in *
do
  [ -d "$file" ] &&
     files[${#files[@]}]=$file/ ||
     files[${#files[@]}]=$file
done
w=$(( $COLUMNS / 4 - 1 ))
printf "%-$w.${w}s %-$w.${w}s %-$w.${w}s %-$w.${w}s\n" "${files[@]}"

Quote:

It then requires me to develop the shell script to accept a directory name as a positional parameter (if no parameter use the present working directory); then adapt is to accept more than one directory as positional parameters; and finally adapt it to display the name of the sub directory and ask whether to: descend and list the contents, list the contents without changing the present working directory, or ignore the directory. (it was suggested that a recursive call would be handy)

I am struggling to write a shell script which performs this task. I found the following script in a forum which i think was written for old version shell (SH). I have tried to reuse this shell and adapt it to the BASH shell.

With very few exceptions, scripts written for sh will run without modification in bash.
Quote:
If anyone is able to help me either adapt the below code or have any suggestions on how i can go about this question.

Please put code inside [code] tags.
Quote:
Code:
#!/bin/sh

if [ -n "$1" ]
then
 WORKDIR=$1
else
 WORKDIR=`pwd`
fi

WORKDIR=`echo $WORKDIR | awk \
'{
  if (substr($0,length($0),1)=="/")
  {
   print substr($0,1,length($0)-1)
  } else {
   print $0
  }
 }'`

echo $WORKDIR

for DIR in `ls -l $WORKDIR | grep "^d" | awk '{ print $NF }'`
do
 echo "Found directory $DIR, Decend, List, Ignore (D,L,I) ?"
 read DLI
 DLI=`echo $DLI | tr "dli" "DLI"`
 case $DLI in
  "D" ) $0 $WORKDIR/$DIR;;
  "L" ) ls -l $WORKDIR/$DIR | grep -v "^d" | awk -v COUNTER=0 \
'{
  printf "%s ",$NF
  COUNTER++
  if (COUNTER>=5)
  {
   printf "\n"
   COUNTER=0
  }
 }' | column -t;;
  "I" ) echo "Ignored directory $DIR";;
 esac
done

ls -l $WORKDIR | grep -v "^d" | awk -v COUNTER=0 \
'{
  printf "%s ",$NF
  COUNTER++
  if (COUNTER>=5)
  {
   printf "\n"
   COUNTER=0
  }
 }' | column -t

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

shell script to delete directories...

Hi. I'm trying to write a script that will delete all directories found, that are not named as a "number" (year)... here is what i mean, let's say i have within /data/exports the following directories: /data/exports/2000 /data/exports/2001 /data/exports/2002 /data/exports/daily/2000... (5 Replies)
Discussion started by: Stephan
5 Replies

2. Shell Programming and Scripting

shell script to delete directories...

*Just realized that i posted this in the wrong forum. should have been in Shell, though it is on AIX... Hi. I'm trying to write a script that will delete all directories found, that are not named as a "number" (year)... here is what i mean, let's say i have within /data/exports the... (8 Replies)
Discussion started by: Stephan
8 Replies

3. UNIX for Dummies Questions & Answers

Help displaying contents of Directories - Urgent

I am new to shell programming and have an assignment question which requires me to list the contents of the present working directory in 4 column format and highlight any subdirectories. It then requires me to develop the shell script to accept a directory name as a positional parameter (if no... (1 Reply)
Discussion started by: cjnd1988
1 Replies

4. Shell Programming and Scripting

Displaying uppercase in shell script

Hi, The user value y/n should get display in upper case printf "$FBOLD\nDo you want to continue?: $FREG" Do you want to continue?: y Though user enters in smaller case y, but it should get display in uppercase Y How it can be done ? With Regards (2 Replies)
Discussion started by: milink
2 Replies

5. Shell Programming and Scripting

renaming directories with shell script

Hi All after looking around the website and various other resources I become stuck. I'm trying to rename directories from Firstname Initial Lastname to lastname,_firstname_initial so far ive got for f in {./} do rename -n 'y/A-Z/a-z/' * rename -n 's/\ /_/g' * ... (2 Replies)
Discussion started by: harlequin
2 Replies

6. Shell Programming and Scripting

how to convert a shell script to a php script for displaying next word after pattern match

I have a shell script which I made with the help of this forum #!/bin/sh RuleNum=$1 cat bw_rules | sed 's/^.*-x //' | awk -v var=$RuleNum '$1==var {for(i=1;i<=NF;i++) {if($i=="-bwout") print $(i+3),$(i+1)}}' Basically I have a pages after pages of bandwidth rules and the script gives... (0 Replies)
Discussion started by: sb245
0 Replies

7. Shell Programming and Scripting

Shell script to modify file in several directories

Hi, I want a script shell to automate modifying httpd.conf file for several instances of apache, save httpd.file before changing it, after modifying it and then restart apache. - Replace ServerRoot "xxxx" by ServerRoot "yyyy" of all directories : "... (4 Replies)
Discussion started by: bras39
4 Replies

8. Shell Programming and Scripting

creating multiple sub-/directories using a shell script

0 Hi, I am looking for a way of creating multiple directories using the mkdir -p command in a shell script. I'm working with an Ubuntu machine and try to do something like that: #!/bin/sh ... (3 Replies)
Discussion started by: frymor
3 Replies

9. UNIX for Dummies Questions & Answers

Shell Script for displaying the line till the target word

" Script for display sentences with special character" Hi, Could any one share a command how to display a line until my target word. For ex: My file has the content as: select * from db_wrk where col1 < col2 insert into table_name values('1','2','tst','wrk','dev','prod') My target... (10 Replies)
Discussion started by: Kalaiselvi66
10 Replies

10. Shell Programming and Scripting

Displaying Column header in shell script

Hi, I need to display specific columns using select statement and spooled to a file and sending it as e-mail. But i am not seeing column header in my output even i use SET HEADING ON.//PREDEFINED LOGIN DETAILS ${ORACLE_HOME}/bin/sqlplus -s ${DB_LOGIN}/${DB_PASSWD} <<EOF SET FEEDBACK OFF SET... (1 Reply)
Discussion started by: pvelmuru
1 Replies
All times are GMT -4. The time now is 11:47 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy