This command below will display files with time stamp of Nov 1.
dir | grep "Nov
1"
Output of the command cannot be used as input of the cp or
copy command.
Output of the command includes details such as file
permissions, file owner, file size and other details.
Input parameters of cp or copy should only include specific
filenames.
If the output of the dir and grep command will be used as
input parameters or pipe to cp command.
An error message will be displayed like:
cp: invalid option -- 'w'
Try `cp --help' for more information.
Error message simply tells that cp command is not able to
process input parameters.
To automate copying from the output of dir and grep, the
output has to be redirected to a file.
Run the command below and redirect the output to a file.
dir | grep "Nov
1" > myfile.txt
Filename extension doesn't matter in Linux but for
readability purposes it’s good to include file names.
The output of the command will not be echoed to the screen
but will be written on myfile.txt.
To automate copying, of the selected files a script is needed.
Script will do these steps below:
1. Read the file line by line.
2. Cut the line and just take the file name
3. Copy the file to the destination
Here's the bash script below to automate file copying of
selected files:
===========================
#!/bin/bash
filename="myfile.txt"
while read line
do
name=$line
cutname=$line
#echi "$name" will display the line on myfile.txt
#echo
"$name"
fcutname=${cutname:45:12}
#echo "$fcutname" will display the concatenated string
#echo
"$fcutname"
xpath="/home/mysql/logs/"
#combine the path
and the filename
finalpath=$xpath$fcutname
#echo
"$finalpath"
cp $finalpath
"/home/backupUser/backupFolder/logsbackup"
done < "$filename"
===========================
In bash script, to cut the string.
Specify the first position to start string concatenation.
Then the second number tells bash it’s the number of
characters that will be cut; starting from the first position.
fcutname=${cutname:45:12}
fcutname variable, first position at column 45 and cut up to
12 characters starting at column 45.
Like example below:
-rw------- 1 user fort
9185 Nov 1 2014 0000c22z.eml
Column 45 is before the first zero character in 0000c22z.eml.
12 is the length or the number of characters for
0000d22d.eml
Basically, it will just get or cut the file name as input
for the copy command.
Remove the comment in the echo command to check how the cut string works in Linux bash.
That's it..Hope it helps to get started on how to automate
task in Linux.
Linux Android App cheat sheet:
https://play.google.com/store/apps/details?id=com.LinuxMobileKit
Linux Android App cheat sheet:
https://play.google.com/store/apps/details?id=com.LinuxMobileKit
Comments
Post a Comment