LINUX.ORG.RU

Простенький вопрос по shell


0

0

Добрый день!

Кто подскажет, как можно скопировать файлы из каталога a в каталог b таким образом, чтобы после копирования они имели имена вида 001 002 003 и т.д. ?

Заранее благодарен.

anonymous

Ответ на: комментарий от cvv

> man rename

Позвольте узнать, а вы сами-то пробовали?

anonymous
()

Считаю что в /dir_from все файлы, их меньше 1000 и их нужно скопировать в /dir_to

seq -w 3 1 `ls /dir_from | tee /tmp/lst | wc -l` | paste /tmp/lst - | xargs -n 2 sh -c 'cp -p /dir_from/$1 /dir_to/$2' xxx

dilmah ★★★★★
()

---cut---
#!/bin/ksh

src="./a"
dst="./b"
echo "Copy $src to $dst"

ls -lAn $src $dst

typeset -i i=1
for f in `find $src -type f`; do
        echo "Copy $f to $i"
        cp $f $dst/$i
        let i=i+1
done
unset i
ls -lAn $dst
---cut---

$ ./test.sh 
Copy ./a to ./b
./a:
total 4908
-rw-r--r--  1 1000  100   55185 Jul 29 16:07 Agraph.pdf
-rw-r--r--  1 1000  100  907770 Jul 29 16:21 EGKNW03.pdf
-rw-r--r--  1 1000  100  793305 Jul 29 16:21 GN99.pdf
-rw-r--r--  1 1000  100  678168 Jul 29 16:22 NW01.pdf

./b:
Copy ./a/Agraph.pdf to 1
Copy ./a/EGKNW03.pdf to 2
Copy ./a/GN99.pdf to 3
Copy ./a/NW01.pdf to 4
total 4908
-rw-r--r--  1 1000  100   55185 Aug  4 18:52 1
-rw-r--r--  1 1000  100  907770 Aug  4 18:52 2
-rw-r--r--  1 1000  100  793305 Aug  4 18:52 3
-rw-r--r--  1 1000  100  678168 Aug  4 18:52 4

как вывести $i с дополнением нулями придумайте сами :)

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от dilmah

> seq -w 3 1 `ls /dir_from | tee /tmp/lst | wc -l` | paste /tmp/lst - | xargs -n 2 sh -c 'cp -p /dir_from/$1 /dir_to/$2' xxx
 
тут ошибка. нужно на 2 строчки разделить. 

NUM_FLS=`ls /dir_from | tee /tmp/lst | wc -l`
if test $NUM_FLS -gt 0 -a $NUM_FLS -lt 1000; then
    seq -w 3 1 $NUM_FLS | paste /tmp/lst - | xargs -n 2 sh -c 'cp -p /dir_from/$1 /dir_to/$2' xxx
fi

dilmah ★★★★★
()

#!/bin/sh
DIR_A=<директория A>
DIR_B=<директория B>

[ -x $DIR_A ] || exit 1
[ -x $DIR_B ] || exit 1

n=1
find $DIR_A -type f -maxdepth 1|while read file; do
	cp $file $DIR_B/`printf %03d $n`
	
	n=`expr $n + 1`
done

masik
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.