Sponsored Content
Top Forums Shell Programming and Scripting revision of copy script to allow for single quote Post 302707387 by LMHmedchem on Friday 28th of September 2012 01:06:39 PM
Old 09-28-2012
revision of copy script to allow for single quote

I have the following script that I use to copy a list of files from one dir to another,
Code:
#!/usr/bin/bash
# $1=filename of file with the list of files to copy
# $2=column header for col in list file with filenames (filePath in most cases)
# $3=src dir
# $3=destination dir

FILE_LIST="$1"
FILE_FIELD="$2"
SOURCE_DIR="$3"
DEST_DIR="$4"

if [ $# -ne 4 ]
then
   echo "usage: $0 file_list field src_dir dest_dir" >&2
   exit 1
fi
if [ ! -f "$FILE_LIST" ]
then
    echo "Invalid filelist $FILE_LIST">&2
    exit 2
fi
# create destination directory if it doesnt' exist
if [ ! -d "$DEST_DIR" ]
then
    mkdir $DEST_DIR
fi
if [ ! -d "$SOURCE_DIR" ]
then
    echo "Invalid source directory">&2
    exit 4
fi
 
awk -vS="$SOURCE_DIR" -vFLD="$FILE_FIELD" 'NR==1{for(i=1;i<=NF;i++)if($i==FLD)w=i;next}
w {print S "/" $w}' $FILE_LIST | xargs  -r cp --target-directory="$DEST_DIR"

This reads the list of file names from a column in a text file and then copies those files from the src dir to the target dir.

I have run into a problem as some of my file names contain single quotes and I am getting an xargs error,

"xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option"

I tried adding -0, but I got an error that the argument line was too long. I don't know xargs well enough to know exactly which arguments I need, or if I need to use a different approach to the script. The filenames will never have spaces or double quotes, but may have . , ' - _ ~ ( ) [ ] { } < >

I appreciate the assistance as there are often a lot of files and no good solution in the absence of a script.

LMHmedchem
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replacing a single quote

Hi there I have a data file like so below 'A/1';'T100002';'T100002';'';'01/05/2004';'31/05/2004';'01/06/2004';'08/06/2004';'1.36';'16';'0.22';'0';'0';'1.58';'0';'0';'0';'0';'0';'0';'clientes\resumen\200405\resumen_T100002_T100002_1.pdf';'';'0001';'S';'20040501';'';'02';'0';'S';'N'... (3 Replies)
Discussion started by: rjsha1
3 Replies

2. Shell Programming and Scripting

single quote

Hi I have a shell script with many lines as below: comment on column dcases.proj_seq_num is dcases_1sq; .... .... I want the above script to be as below: comment on column dcases.proj_seq_num is 'dcases_1sq'; I want to have single quotes like that as above for the entire shell... (2 Replies)
Discussion started by: dreams5617
2 Replies

3. Shell Programming and Scripting

escaping single quote

hi, echo 'abc' will give output abc how can i get output as 'abc' plz help. thanks in advance (3 Replies)
Discussion started by: javeed7
3 Replies

4. Shell Programming and Scripting

Regex in grep to match all lines ending with a double quote (") OR a single quote (')

Hi, I've been trying to write a regex to use in egrep (in a shell script) that'll fetch the names of all the files that match a particular pattern. I expect to match the following line in a file: Name = "abc" The regex I'm using to match the same is: egrep -l '(^) *= *" ** *"$' /PATH_TO_SEARCH... (6 Replies)
Discussion started by: NanJ
6 Replies

5. Shell Programming and Scripting

Replace single quote with two single quotes in perl

Hi I want to replace single quote with two single quotes in a perl string. If the string is <It's Simpson's book> It should become <It''s Simpson''s book> (3 Replies)
Discussion started by: DushyantG
3 Replies

6. Shell Programming and Scripting

single quote replacement

hi all, i have a data in the file which of the formate : 100,102,103 and the required formate is \'100\',\'102\',\'103 Idealy we need to replace , with \',\' Regards arkesh (2 Replies)
Discussion started by: arkeshtk
2 Replies

7. Shell Programming and Scripting

How to match character with single quote?

I need to check whether first character of variable is single quote. I tried the below constructions but they are all not working (always return true) if (test `echo "$REGEXP" |cut -c1` != "'"); then echo "TRUE"; fi if (test `echo "$REGEXP" |cut -c1` != '\''); then echo "TRUE"; fi if (test... (5 Replies)
Discussion started by: urello
5 Replies

8. Shell Programming and Scripting

Passing parameter with single quote to shell script

Hello All, I am trying below +++++++++ #/bin/bash set -x Host=$1 Port=$2 User=$3 Pass=$4 Warning=$5 Critical=$6 SCRIPT_LOC=/opt/agent/ Parameters="'""hostname=$Host&""port=$Port&""username=$User&""password=$Pass&""jvm=UsedMemory,$Warning,$Critical""'" echo $Parameters... (10 Replies)
Discussion started by: sundari127
10 Replies

9. Shell Programming and Scripting

Replacing all but the first and last double quote in a line with a single quote with awk

From: 1,2,3,4,5,This is a test 6,7,8,9,0,"This, is a test" 1,9,2,8,3,"This is a ""test""" 4,7,3,1,8,"""" To: 1,2,3,4,5,This is a test 6,7,8,9,0,"This; is a test" 1,9,2,8,3,"This is a ''test''" 4,7,3,1,8,"''"Is there an easy syntax I'm overlooking? There will always be an odd number... (5 Replies)
Discussion started by: Michael Stora
5 Replies

10. Shell Programming and Scripting

Single quote _error_.

Hi all... (This is Don's domain.) I have come across an anomaly in sh and dash compared to bash. It involves echoing a character set to a file in sh and dash compared to bash. It is probably easier to show the code and results first. #!/usr/local/bin/dash #!/bin/sh #!/bin/bash echo... (4 Replies)
Discussion started by: wisecracker
4 Replies
SERVICE(8)						    BSD System Manager's Manual 						SERVICE(8)

NAME
service -- control (start/stop/etc.) or list system services SYNOPSIS
service -e service -R service [-v] -l | -r service [-v] <rc.d script> start|stop|etc. DESCRIPTION
The service command is an easy interface to the rc.d system. Its primary purpose is to start and stop services provided by the rc.d scripts. When used for this purpose it will set the same restricted environment that is in use at boot time (see below). It can also be used to list the scripts using various criteria. The options are as follows: -e List services that are enabled. The list of scripts to check is compiled using rcorder(8) the same way that it is done in rc(8), then that list of scripts is checked for an "rcvar" assignment. If present the script is checked to see if it is enabled. -R Restart all enabled local services. -l List all files in /etc/rc.d and the local startup directories. As described in rc.conf(5) this is usually /usr/local/etc/rc.d. All files will be listed whether they are an actual rc.d script or not. -r Generate the rcorder(8) as in -e above, but list all of the files, not just what is enabled. -v Be slightly more verbose ENVIRONMENT
When used to run rc.d scripts the service command sets HOME to / and PATH to /sbin:/bin:/usr/sbin:/usr/bin which is how they are set in /etc/rc at boot time. EXIT STATUS
The service utility exits 0 on success, and >0 if an error occurs. EXAMPLES
The following are examples of typical usage of the service command: service named status service -rv The following programmable completion entry can be use in bash(1) for the names of the rc.d scripts: _service () { local cur cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $( compgen -W '$( service -l )' -- $cur ) ) return 0 } complete -F _service service SEE ALSO
bash(1) (ports/shells/bash), rc.conf(5), rc(8), rcorder(8) HISTORY
The service utility first appeared in FreeBSD 7.3. AUTHORS
This manual page was written by Douglas Barton <dougb@FreeBSD.org>. BSD
December 11, 2012 BSD
All times are GMT -4. The time now is 08:53 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy