У циклі for, як мені відтворювати тільки поточний файл на одній (оновлення) лінії замість кожного файлу, який буде виробляти список?


1

Моє перше питання на цій stackexchange, і я впевнений, що буде більше, як я ризикую далі в світ того, що є Linux ...

Я маю for-loop в оболонці-скрипті, який пакет перейменує всі файли на підрядок (останній n символів) його початкового імені.

Це буде echo кожна ітерація на новій лінії в кінцевому підсумку виробляє список всіх файлів, але як я можу зберегти це відлуння на одній / оновлюваній лінії, щоб він не створював цей (іноді великий) список?

echo "- Renaming file..."

for file in `find fldr -type f`
do
  newf=$(echo $file | rev | cut -c -6 | rev)
   mv -f $file fldr/$newpt
  echo "  * $file > $newf"
done

фактичний вихід ...

- Renaming file...
  * file1a.txt > 1a.txt
  * file2a.txt > 2a.txt
  * file3a.txt > 3a.txt
  * ...

бажаний результат ...

- Renaming file...
  * file3a.txt > 3a.txt

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

[БОНУС] Як я зможу відобразити n'th файл, який він перейменує?

- 3 files renamed...
  * file3a.txt > 3a.txt

Де n - сукупна сума / кількість перейменованих файлів.

Відповіді:


2

Просто змініть рядок ехо на це:

echo -ne "\r  * $file > $newf                         "

Пробіли на кінці видаляють старий вихід з лінії.


1
Умм, я думаю, що це має бути echo -ne "\r * $file > $newf В іншому випадку ехо не буде інтерпретувати символи звільнення.
darkdragn

1
printf є більш портативним, коли йдеться про уникнення символів: printf "\r * %s > %-50s" "$file" "$newf"
glenn jackman

Працював для мене. Але впевнений, printf, ймовірно, краще, але я просто зробив просту модифікацію оригіналу тут.
Keith

Дякую! Виглядає перспективним. Я отримаю спробувати це південь але я можу побачити логіку. Позначиться як правильний, коли отримаю його роботу.
SaultDon

@chris Ви маєте рацію, я спробував, і він не працював би без цього я роблю це в Bash на Ubuntu 10.04, якщо це робить різницю ... Дякуємо за допомогу всім.
SaultDon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.