Why doesn't this work?


 
Thread Tools Search this Thread
# 1  
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  
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  
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  
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  
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!
 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

10 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. Shell Programming and Scripting

Function doesn't work

Hello, and here's my problem: I can't get my function to do what I want. When I call my function get_from_A_to_F I give it an argument $remainder. I want my function to substitute a number higher than 9 to a specific letter. If the argument is equal to 10 than it should change it to "A".... (8 Replies)
Discussion started by: linas
8 Replies

3. Shell Programming and Scripting

echo doesn't work right

Hi,when I run my first shell script,I got something that doesn't work right. I wrote this code in the script. echo -e "Hello,World\a\n"But the screen print like this: -e Hello,World The "-e" wasn't supposed to be printed out. Can anyone help me out?:wall: Many thanks!:) (25 Replies)
Discussion started by: Demon
25 Replies

4. Shell Programming and Scripting

bc: scope doesn't work for me

I am trying to use bc to calculate the difference between two nano second time stamps. bc does the calculation but seems to ignore the scale option: micro_start=$(date +%s.%N) # .. some stuff happens here micro_stop=$(date +%s.%N) TOT=$(echo "scale=3; $micro_stop - $micro_start" | bc)... (2 Replies)
Discussion started by: LostInTheWoods
2 Replies

5. Shell Programming and Scripting

Lipo doesn't work

Hi guys, Am using lipo to merge ppc and i386 version of a static/dylib file based on "file type to load". I am working on Mac OS 10.5.6 and new to shell scripting. Please help me out. This is my code. echo "This file combine ppc and i386 file to form universal library" echo "source... (4 Replies)
Discussion started by: vishwesh
4 Replies

6. 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

7. Shell Programming and Scripting

What to do when mtime doesn't work?

I have a folder that I need to search for new files and copy on the latest. I've been using "-mtime -1" in my command line but it doesn't seem to work. I've been meaning to fine a different script because files are dropped into the folder all day long and because of the -mtime, I've only be... (19 Replies)
Discussion started by: bbbngowc
19 Replies

8. Shell Programming and Scripting

Awk: Can anyone tell me why this doesn't work?

If there exists a field in stdin, print it, otherwise, print hello..... These print nothing: cat /dev/null | awk '{if ( length > 0 ) print $1; else print "hello"}' cat /dev/null | awk '{if ( $1 ) print $1; else print "hello"}'But the scripts work if I run them directly in a terminal: ... (8 Replies)
Discussion started by: ksheller
8 Replies

9. 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

10. 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

Featured Tech Videos