Копирайте конкретни файлове от една директория в друга, като добавите нейното основно име на директория

Имам
~/a/a1/1.pdf
~/a/a1/2.pdf
~/a/b1/1.pdf
~/a/b1/2.pdf
Искам да копирам всички pdf файлове в ~/a/c с имена a1_1.pdf,a1_2.pdf,b1_1.pdf,b2_2.pdf. Как да направя това?

Моля, простете ми невежеството. Аз съм нов в програмирането и Linux


person Sandy    schedule 18.05.2018    source източник
comment
кои са всички начини, които сте опитвали и какво ви проваля да направите това?   -  person Ajithkumar_sekar    schedule 18.05.2018
comment
Няма да го направя вместо вас, защото ще научите повече, като го направите. Но погледнете модула os и методите, които низовете имат (напр. strip, split, toupper и т.н.).   -  person Paula Thomas    schedule 18.05.2018


Отговори (2)


Споменахте, че не сте запознат с Linux. По-долу е как да го направите с команди на обвивката. След като разберете това, ако искате да го направите от Python скрипт, можете да направите подобни действия с импортиране на os модула.

Първо създайте вашата целева директория:

# mkdir ~/a
# mkdir ~/a/c

тогава можете да копирате

# cp ~/a/a1/1.pdf ~a/c/a1_1.pdf
# cp ~/a/a1/2.pdf ~a/c/a1_2.pdf
# cp ~/a/b1/2.pdf ~a/c/b1_1.pdf
# cp ~/a/b1/2.pdf ~a/c/b2_2.pdf
person Timothy Lombard    schedule 18.05.2018

Не знам дали трябва автоматично да преглеждате папки, така че ако имате нужда, можете да използвате нещо подобно, за да идентифицирате PDF файлове:

for root, dirs, files in os.walk(~/a):
    print(root, dirs, files)

След това можете да манипулирате пътя с os.path команди< /a>:

os.path.dirname('~/a/a1/1.pdf') -> '~/a/a1'
os.path.basename('~/a/a1/1.pdf') -> '1.pdf'

Накрая можете също да използвате команда shutil.copyfile:

shutil.copy('~/a/a1/1.pdf', '~/c/a1_1.pdf')

Позволявам ви да комбинирате и тествате всички тези команди, за да се запознаете с Python. Не се колебайте да отпечатате или отстраните грешки в променливи, преди да направите окончателния shutil.copyfile

person f-roche    schedule 18.05.2018