2015-06-06 3 views
0

Я хочу скопировать один файл во многие директории. Моя структура пути подобна выше.Скопируйте файл в несколько каталогов - Unix

folder1-> anotherfolder -> **here I want to copy my file** 
folder2-> anotherfolder -> **here I want to copy my file** 
folder3-> anotherfolder -> **here I want to copy my file** 
folder4-> anotherfolder -> **here I want to copy my file** 

folder1,2,3,4 находится в одном каталоге. Но имена - это папки не последовательные.

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

for d in */ ; do 
    echo "$d" 
    done 

Этот код дает мне имя папки в каталоге. После этого шага, как я могу попасть в папки и скопировать файл?

ответ

1

Первая попытка (есть ограничения)

for d in $(find . -maxdepth 2 -type d | grep "/.*/"); do 
    cp file "$d" 
done 

ОГРАНИЧЕНИЯ:

  • без пробелов/Slashes/glob символов в именах dir

Вторая попытка (уборщик, благодаря gniourf_gniourf)

find . -maxdepth 2 -path './*/*' -type d -exec cp file {} \; 
+0

anotherfolder не имя константы. Это все еще работает? –

+0

Я отредактировал решение, чтобы поймать только пути, например ./folderA/folderB/ –

+0

Он скопировал, но имя файла было изменено в другую папку. Мое фактическое имя файла - test.java –

1

Похоже, что вы хотите сделать что-то вроде этого:

for d in */; do 
    cp file "$d"/anotherfolder 
done 
Смежные вопросы