Копирование нескольких названий элементов

Итак, у меня есть папка с 2n файлами. n это файлы .foo, n из них .bar файлы. Я хочу скопировать имена файлов .foo (все они разные) в файлы .bar, упорядоченные в алфавитном порядке. Расширение должно оставаться таким, как есть.

1
задан 25 August 2013 в 04:36

1 ответ

Скажем, Вы имеете (a, b, c) .foo и (p, q, r) .bar:

ls
a.foo  b.foo  c.foo  p.bar  q.bar  r.bar

Вы собираете foos и панели в переменных типа массив:

foos=(*.foo)
bars=(*.bar)

Размер массива является $ {#foos [*]}, индексы идут от 0 до len-1. Первый элемент является $ {foos [0]} или $ {панели [0]}.

for f in $(seq 0 $((${#foos[*]}-1))) 
do
  fool=${foos[$f]}; 
  echo mv ${bars[$f]} ${fool%.foo%.bar}
  mv ${bars[$f]} ${fool/.foo/.bar}
done 

mv p.bar a.bar
mv q.bar b.bar
mv r.bar c.bar

Если Вам не нравится эхо, удалите его. Сценарий принимает количество соответствия файлов панели и нечто. Я не уверен, будет ли строка 3 и 4 всегда перечислять имена в алфавитном порядке - она сделала в моих тестах, но у меня нет записанной спецификации для этого.

Если файл будет содержать дополнительный ".foo", то как "a.foo-bork.foo" он не будет работать intendet, и он не санирован против пробелов в именах файлов или разрывах строки и т.п.. Но это могло бы сделать то, что Вы хотите.

0
ответ дан 25 August 2013 в 04:36

Другие вопросы по тегам:

Похожие вопросы: