Why doesn't this work?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Why doesn't this work?
# 1  
Old 01-11-2013
Why doesn't this work?

find . -name "05_scripts" -type d -exec mv -f {}/'*.aep\ Logs' {}/.LogFiles \;

Returns this failure:
mv: rename ./019_0120_WS_WH_gate_insideTEST/05_scripts/*.aep\ Logs to ./019_0120_WS_WH_gate_insideTEST/05_scripts/.LogFiles/*.aep\ Logs: No such file or directory

I don't know why it's trying to use the "/*.aep\ Logs" in the target directory.

If it key in the command generated manually it works fine.
mv -f ./019_0120_WS_WH_gate_insideTEST/05_scripts/*.aep\ Logs ./019_0120_WS_WH_gate_insideTEST/05_scripts/.LogFiles/
Works perfectly.

Moderator's Comments:
Mod Comment Please don't use these types of non detailed subject lines - Why doesn't this work? . This is strictly against forum rules and you will receive a reminder/warning next time. Please read the rules of the forums again.
# 2  
Old 01-11-2013
find is not shell, it does not expand * inside commandlines. It does inside -name and -path arguments however.

\ is taken literally inside single quotes anyway, so probably won't do what you want it to do.

I don't think find can do everything you want all by itself, but it can at least find the names for you, and print them one-by-one. Shell can do the rest.

Code:
find ./ -path '*/05_scripts/*.aep Logs' | while read LINE
do
        echo mv "$LINE" $(basedir $LINE)/.Logfiles
done

Remove the 'echo' once you've tested and are sure it does what you want.

Last edited by Corona688; 01-11-2013 at 04:44 PM..
# 3  
Old 01-11-2013
Not quite understanding ...

I need something that will find the "blablabla..aep Logs" directories and move them into a hidden directory called .LogFiles in their parent directory. I also need it to work on many directories under the current. So that it does not move all "blablabla..aep Logs" to one single directory.

I have a bash script that does this but I have to designate in variable each directory to be processed.
mkdir "$dir01"/.LogFiles
mv -f "$dir01"/*.aep\ Logs "$dir01"/.LogFiles/


I want to do it without having to change the script variables.

Could I accomplish this with a bash script?
# 4  
Old 01-12-2013
Quote:
Originally Posted by scribling
find . -name "05_scripts" -type d -exec mv -f {}/'*.aep\ Logs' {}/.LogFiles \;
On top of what Corona688 already told you: inside an "-exec"-clause only ONE "{}" is allowed. Try this to see the effect:

Code:
find . -type d -exec echo "{}" \;       # will work
find . -type d -exec echo "{} {}" \;    # will not work

If you want to achieve this you will have to write a script which cyou call from the exec-clause:

Code:
find . -type d -exec myscript {} \;

where myscript looks like:

Code:
#! /bin/ksh

print - "$1" "$1"

exit 0

I hope this helps.

bakunin
# 5  
Old 01-12-2013
Running a shell, i.e. creating a new process for each file found may work well on small file counts, but would not be that efficient on large dir trees.
What about using the (deprecated) -path test as Corona688 proposed, execing a mv -t "$dir01"/.LogFiles/ (option -t not present on all systems), followed by a + that collects all filenames found into the mv parameters? Like:
Code:
find . -ipath '*/05_scripts/*.aep Logs'  -exec echo mv -t "$dir01"/.LogFiles/ {} +

. Give it a shot and report results!
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

-ne 0 doesn't work -le does

Hi, I am using korn shell. until ] do echo "\$# = " $# echo "$1" shift done To the above script, I passed 2 parameters and the program control doesn't enter inside "until" loop. If I change it to until ] then it does work. Why numeric comparison is not working with -ne and works... (3 Replies)
Discussion started by: ab_2010
3 Replies

2. HP-UX

Sudo doesn't work

I edited sudoers like this:vi /etc/sudoers subex ALL =(root) NOPASSWD: /usr/ccs/bin/pstack But the respective user still is prompted for password, and even when the right password is used, the command is still not launched.$sudo usr/ccs/bin/pstack 26557 We trust you have received the usual... (5 Replies)
Discussion started by: black_fender
5 Replies

3. Shell Programming and Scripting

if condition doesn't work

i want to get the value for column 4rth when i =4. please guide what i am doing wrong. thanks var=`cat file.csv` for i in $var; do { if ; then var4=$var4+$i fi echo $i } done I am geting this error message "0403-009 The specified number is not valid for this command." (8 Replies)
Discussion started by: sagii
8 Replies

4. Shell Programming and Scripting

alias doesn't work

Hi I have put alias ll='ls -la' in .profile file but it doesn't work. On hand it works it looks like the .profile file is not beeing read. How to check whitch file is loaded? ,profile? .bash_profile? My system: SunOS mion 5.10 Generic Shell: /bin/pfksh Thanks (2 Replies)
Discussion started by: miojamo
2 Replies

5. Shell Programming and Scripting

awk -v -- Why doesn't my example work?

Hi. I've been playing around a bit. This isn't for any practical purpose-- it's really just a theoretical exercise. I wrote this little thing: foreach num ( 6 5 4 ) awk -v "number=$num" 'BEGIN{for(x=0;x<$number;x++) printf "-"; printf "\n"}' end I would expect the following output: ... (3 Replies)
Discussion started by: treesloth
3 Replies

6. UNIX for Dummies Questions & Answers

lp -o <option> doesn't work

why lp -o <option> doesn't work on my SCO Unix. (4 Replies)
Discussion started by: wendyz
4 Replies

7. Shell Programming and Scripting

ls -d doesn't work on Solaris

Hello, the ls -d command to only list directories in a directory doesn't seem to work on Solaris and the man command says to use that combination: ls -d Anyone have the same problem and find a resolve? Thanks BobK (9 Replies)
Discussion started by: bobk544
9 Replies

8. UNIX for Dummies Questions & Answers

Script doesn't work, but commands inside work

Howdie everyone... I have a shell script RemoveFiles.sh Inside this file, it only has two commands as below: rm -f ../../reportToday/temp/* rm -f ../../report/* My problem is that when i execute this script, nothing happened. Files remained unremoved. I don't see any error message as it... (2 Replies)
Discussion started by: cheongww
2 Replies

9. Shell Programming and Scripting

Why doesn't this work?

cat .servers | while read LINE; do ssh jason@$LINE $1 done exit 1 ./command.ksh "ls -l ~jason" Why does this ONLY iterate on the first server in the list? It's not doing the command on all the servers in the list, what am I missing? Thanks! JP (2 Replies)
Discussion started by: jpeery
2 Replies
Login or Register to Ask a Question