Это будет работать даже без цикла для всех имен файлов, начинающихся с file
:
perl -pe 's/\n/ /g' file*
Для таких операций я предпочитаю perl. Имеет тот же синтаксис, что и sed , является переносимым и не имеет всех этих странных параметров sed .
Вы также можете применить переключатель -i
к perl (например, sed), чтобы внести изменения на месте: perl -i.old -pe ....
(старый файл будет скопирован с расширением .old -Вы можете просто использовать -i
и файл резервной копии не будет сохранен)
Если вы предпочитаете, вы можете использовать команду find
следующим образом:
$ find . -type f -name 'file*' -exec bash -c 'tr "\n" " " <$0 >$0.new' {} \;
Если бы это был я, я бы загрузил массив следующим образом:
#!/bin/bash
string="file_20160825_namegoeson"
myarray[0]="${string:5:4}"
myarray[1]="${string:9:2}"
myarray[2]="${string:11:2}"
echo "${myarray[0]}"
echo "${myarray[1]}"
echo "${myarray[2]}"