2013-04-25 2 views
0

Он копирует только один файл.Зачем копировать только один файл

find ../../ -type f -name <filename.PDF> -print0 | xargs -0 -I file cp -rv file --target-directory=directory name with path 

Почему это копирует только один файл. Я хочу скопировать весь файл с тем же именем, но созданный на другую дату и разные папки.

+0

Вы понимаете, что каждая копия в целевой каталог перезапишет предыдущий файл, который вы только что скопировали. –

+0

действительно, поскольку @jimmcnamara говорит: ваш 'find' найдет файлы с таким же именем. Для каждого из них он скопирует его в один и тот же целевой каталог: это означает, что второй будет перезаписывать первый, а затем перезаписать его и т. Д. Таким образом, вы получите последний найденный 'find' ... Вы должны переименовать файлы по мере их копирования. (См. Решение Джима) –

ответ

2

Попробуйте что-то вроде этого:

cnt=1 
find ../../ -type f -name filename.PDF | 
while read fname 
do 
    f=$(basename $fname) 
    cp $file /target/directory/${f}.${cnt} 
    cnt=$(($cnt + 1)) 
done 

дать каждому файлу назначения уникальный номер.