LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   Help I need help tarring multiple files in multiple directories (https://www.linuxquestions.org/questions/linux-newbie-8/help-i-need-help-tarring-multiple-files-in-multiple-directories-159583/)

Tinkster 03-23-2004 02:21 AM

What do you get in cygwin when you try
echo "Test" > test
?

Even that emulation can't be THAT bad...


Cheers,
Tink

Bebo 03-23-2004 02:25 AM

Ohnoooo...! I'm sorry VisionZ, I gave you a script which is a bit too specific in the wrong places. You see the line with the find command? It says it should find files under /usr/local/bin, which is where I have my scripts :) I did this just to test the script, but I forgot to change it when I posted it. OK, let's see now... I take som ideas from Tink's script now :)

Code:

#!/bin/sh

SCRIPTNAME=~/archiver

if [ x`echo $1` = x ] ; then
  ARCHIVEDIR=`pwd`
else
  ARCHIVEDIR="$1"
fi

ARCHIVE=${ARCHIVEDIR}/scripts.tar

find $ARCHIVEDIR -type f | while read FILE ; do
  BASHSCRIPT=`file "$FILE" | grep Bourne | grep -c "shell script text executable"`

  if [ $BASHSCRIPT -eq 1 -a "$FILE" != "$SCRIPTNAME" ] ; then
      echo "Archiving $FILE in $ARCHIVE"
      tar rf $ARCHIVE $FILE
  fi
done


VisionZ 03-23-2004 04:07 AM

OK I think it may have worked, but I cant find a tar archive??? it should be in my home correct? What is its name also, scripts.tar??

except I get no output, it just sits there and waits, then goes back to the prompt. I get no echoing or any output at all.

I really do appreciate both of your guys help and paitence, hopefull I can attain your level of skill someday kudos to both of you.

Tink - to answer your question when I make a script out of

echo "Test" > test

nothing happens, when i type it in the cygwin terminal nothing happens

it just goes to the next prompt.

Bebo 03-23-2004 04:36 AM

Yes, the tar archive is called scripts.tar and should be in your home dir. This is very strange... My script might fail if the file command doesn't work as I think. Try issue file oneofyourscripts and see what the output is. What my script looks for is output of the form "Bourne-Again shell script text executable" or "Bourne shell script text executable". If, for some reason, this isn't echoed, then my script won't work.

Sorry for confusing you; maybe I'm just stupid and write bad scripts :)

VisionZ 03-23-2004 05:13 AM

No it probably is working just fine, but is an issue with my cygwin for windows or something. Let me try
file rmv~
a script i wrote to get rid of the extra ~ files emacs makes
and see what happens.

VisionZ 03-23-2004 05:14 AM

when i try this it says

rmv~: cannot open (rmv~).

thats all it says

VisionZ 03-23-2004 05:16 AM

what are you guys using as a text editor?? is it wordpad and you create txt files or are you guys using emacs or vim? Or something else I dont know about.

Bebo 03-23-2004 05:43 AM

I'm usually using emacs or pico, vi/vim when I'm forced to it :)

That file error message looks odd to me. Another possibility is to rewrite the BASHSCRIPT "boolean" to look for the string "#!/bin/" in every file:
Code:

BASHSCRIPT=`grep -c "\#\!/bin/" "$FILE"`

VisionZ 03-23-2004 06:31 AM

I,ll give it a try, and and well this is what happened



IT WORKED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
now one more SMALL thing how do I make it not archive itself, and to check and see if the archive it is making already exists, I dont want to archive over a previous archve, maybe just add a 1 and so on to the end or something if that is not to complicated

Bebo 03-23-2004 10:08 AM

To solve the problem with its archiving itself in a nice way I'd first like to know a way to expand directory names such as ./blah and ../../blah, or ~/blah to the proper full path name. This is something I haven't learned yet :)

VisionZ 03-23-2004 11:15 PM

Again Thanks a ton for your help I,m Afferoing ya

Bebo 03-24-2004 01:59 AM

Gee thanks :) But can you do that? I haven't signed up...

VisionZ 03-24-2004 02:40 AM

I dont know, I,ll figure it out though, I left feedback =)
Not only am I new to linux I,m new to linuxquestions.com
But you all have inspired me to parition some of my HD to Slackware
screw this cygwin BS!

Bebo 03-25-2004 05:25 PM

Hello again, VisionZ and spectators :) I've solved your problem now, I think:
Code:

#!/bin/sh

ARCHIVEBASENAME=scripts

if [ x`echo $1` = x ] ; then
  SEARCHDIR=.
else
  SEARCHDIR="$1"
fi
 
NUMBER=1
while [ -f "${ARCHIVEBASENAME}${NUMBER}.tar" -o -f "${ARCHIVEBASENAME}${NUMBER}.tar.gz" ] ; do
  NUMBER=$((NUMBER + 1))
done

ARCHIVE=${ARCHIVEBASENAME}${NUMBER}.tar

if [ -d "$SEARCHDIR" ] ; then
  find "$SEARCHDIR" -type f | while read FILE ; do
      ISSCRIPT=`grep -c "\#\!/bin/" "$FILE" 2> /dev/null`
     
      [ $? -gt 0 ] && ISSCRIPT=0
     
      if [ $ISSCRIPT -eq 1 ] ; then
        if [ ! "$FILE" -ef "$0" ] ; then
            echo "Archiving $FILE in $ARCHIVE.gz"
            tar rf "$ARCHIVE" "$FILE"
        fi
      fi 
  done   

  [ -f "$ARCHIVE" ] && gzip "$ARCHIVE"
fi

Well, this was fun, we have to do it again some time ;) :p


All times are GMT -5. The time now is 06:09 AM.