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


-5

Чи можете ви запропонувати спосіб копіювання списку файлів з одного каталогу в інший.

Під час копіювання сценарію слід використовувати великі літери першої літери імені файлу та малі всі інші літери.


4
Ви просите про допомогу чи просите мене написати це для вас?
Xyon

2
Можливо, ви повинні показати нам якийсь код, який підтверджує, що ви намагалися його вирішити і не змогли.
BenjiWiebe

Відповіді:


2

На ваш розгляд:

for i in *;
do
    fletter=`echo $i| cut -b 1`;                 # FIRST LETTER
    rest=`echo $i | cut -b 2-`;                  # THE REST
    fletter=`echo $fletter | tr "[a-z]" "[A-Z]"`;# CAPITILIZE FIRST LETTER
    rest=`echo $rest | tr "[A-Z]" "[a-z]"`;      # LOWER CASE THE REST
    cp "$i" "/target/directory/$fletter$rest" ;  # COPY TO DESTINATION
done

Тут *буде розширено до файлів у поточному каталозі. Якщо ви хочете, щоб це було обмежено лише файлами , врахуйте наступне:

find . -type f -print0 | while IFS= read -r -d '' i; do
    # rest of the script
done

3
Чому for i in $(ls)і ні for i in *?
slhck

@slhck Я використав цю форму, щоб дозволити йому зрозуміти, як розширити приклад на більш підходящий: \ls -p | grep -v "/"обробляти лише файли, а не каталоги.
mnmnc

2
Це дійсно поганий спосіб обробляти лише файли, а не каталоги, і я б рекомендував проти них з кількох причин. Дивіться: mywiki.wooledge.org/BashFAQ/020 - у вашому прикладі ви також повинні цитувати змінні, щоб мати можливість обробляти файли з пробілами або символами глобалізації у своєму імені.
slhck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.