Script to backup multiple files and amend their filenames
Hi,
I'm trying to write a command that backs up certain files into my current directory and adds a prefix to the backed up file name. I realise this can be done in a script by specifying each individual file but would like to know if it can be done on one line and made an alias.
I have the following files
AMQERR01.LOG
AMQERR02.LOG
AMQERR03.LOG
and I want to create backups called
$QM-AMQERR01.LOG
$QM-AMQERR02.LOG
$QM-AMQERR03.LOG
I've been using this command
find /var/mqm/qmgrs/$QM/errors -name "AMQERR*" -exec cp {} $QM-* \;
but the cp command creates one file called, e.g. QMNAME-*
I also tried
find /var/mqm/qmgrs/$QM/errors -name "AMQERR*" -exec cp {} $QM-{} \;
but the file was renamed QMNAME-{}
I'm trying to write a command that backs up certain files into my current directory and adds a prefix to the backed up file name. I realise this can be done in a script by specifying each individual file but would like to know if it can be done on one line and made an alias.
...
Is this possible?
Yup. Try this:
...Note that this code will descend into any subdirectories, which may not be what you want. Substitute a directory for dot, if you want (and maybe exclude the sed command).
-mschwage
...Note that this code will descend into any subdirectories, which may not be what you want. Substitute a directory for dot, if you want (and maybe exclude the sed command).
-mschwage
Thanks for both these suggestions. I've tried this one liner and am hitting a problem. I don't think the sed command is working as I was getting an error. I've amended the code as follows to try and debug it:
The output from the find is:
/var/mqm/qmgrs/STPFAUQA/errors/AMQERR03.LOG
/var/mqm/qmgrs/STPFAUQA/errors/AMQERR02.LOG
/var/mqm/qmgrs/STPFAUQA/errors/AMQERR01.LOG
What sed expressions should I use to change this to just the filename? Or alternatively is there an ls command which can just display the filename negating the need for the sed?
Ooo, that's a tough trick. You want to modify the value in {}, which I don't think can be done. Probably you should change the alias:
...surround your commands with ()'s to run it in a subshell, then do a cd inside it. That will do the find in the new directory without putting you in the new directory. Make sure the ()'s are inside the single-quotes.
I prefer to use the . because an * can potentially fill the input buffer and create an invalid shell command. (Think about it for a second... the * matches all files in the current directory... if there are a lot of files, there will be a lot of matches. Whereas the find command's job is not to do shell metacharacter matching, it's to print out files that match your characteristics, line by line. This makes the dot safer to use with find.).
there are mutiple file nams in the directory. How to return the the lastest files for each file name.
ex.
abc1234_050201
abc1234_050206
abc1234_050208
xyz34_050204
xyz34_050210
xyz34_050218
thanks (4 Replies)
Hi,
Is there any way to do a cat * where it shows the name of each file in the process? Similar to what more does below?
$ more ?.sql
::::::::::::::
1.sql
::::::::::::::
set linesize 200
select db_unique_name,
cast(
from_tz(
cast(... (5 Replies)
How can I Run one script on multiple files and print out multiple files.
FOR EXAMPLE
i want to run script.pl on 100 files named 1.txt ....100.txt under same directory and print out corresponding file 1.gff ....100.gff.THANKS (4 Replies)
How can I run the following command on multiple files and print out the corresponding multiple files.
perl script.pl genome.gff 1.txt > 1.gff
However, there are multiples files of 1.txt, from 1----100.txt
Thank you so much.
No duplicate posting! Continue here. (0 Replies)
Hi there,
I am having trouble with a script I have written, which is designed to search through a directory for a header and payload file, retrieve a string from both filenames, compare this string and if it matches make a backup of the two files then move them to a different directory for... (1 Reply)
Hello,
I am trying to write a bash shell script that does the following:
1.Finds all *.txt files within my directory of interest
2. reads each of the files (25 files) one by one (tab-delimited format and have the same data format)
3. skips the first 10 rows of the file
4. extracts and... (4 Replies)
Hi,
I wrote a simple script to backup of index.php and index.html in my box. So, I wrote a script which take a copy of the index page as 1Mar09: but it does not comes up..
#! /bin/bash
find . -name index.* > domains.txt
for i in `cat domains.txt` ; do cp index* index*.1Mar09 $i; done
But... (6 Replies)
I have a large list of filenames from an Excel sheet, which I then translate into a simple text file. I'd like to use this list, which contains various file extensions , to archive these files and then remove them recursively through multiple directories and subdirectories. So far, it looks like... (5 Replies)
I have many files that have "inputstring" somewhere in their filename (without the quotes), and I want to rename them all so that "inputstring" is replaced with "newstring". And I also want to specify arbitrary text for "inputstring" and "newstring" so that I can call the scripts that does this... (6 Replies)