Похоже, вы пытаетесь запустить входные файлы через awk и сохранить результаты под другим именем. Если вам не нужно особенное именование файлов, это должно служить:
for i in *.txt; do
awk -f NormalizeFiles.awk $i > $i.out
done
Хотя ваш вопрос помечен как bash, ваш синтаксис, как кто-то указал, не является bash, например неправильное использование скобок. Синтаксис %% используется неправильно и не кажется подходящим для вашей цели; однако вы должны проверить http://www.tldp.org/LDP/abs/abs-guide.pdf , если вы хотите узнать об этом больше.
Если бы в параллельном перемещении файлов были какие-то достоинства, велика вероятность, что mv
уже делал бы это самостоятельно, либо существовал бы аналогичный инструмент. ;)
Нет смысла запускать mv
параллельно на одном и том же исходном / целевом диске, поскольку обычно скорость носителя в любом случае ограничена. Если / usb_storage /
- это USB-накопитель, это не заставит его работать быстрее.
mv /db/dbfile1 /db/dbfile2 /db/dbfile3 /usb_storage/
Должен быть лучшим методом, поскольку он делает то, что вы хотите, блокирует до завершения (чтобы ваша альтернатива была примерно эквивалентной, вам нужно добавить wait
в конце). Последовательная запись файлов вместо параллельной также помогает предотвратить ненужную фрагментацию файлов.
Кроме того, в случае, если / usb_storage /
недостаточно велик для хранения всех файлов, на которые вы перемещаетесь, вместо трех неполных / без копий при параллельной работе вы можете получить хотя бы один полный файл с последовательным решением.
Есть потенциальный прирост производительности при параллельной работе mv: пока один процесс ожидает возврата чтения, если другой файл находится в кэше, он может сразу перейти к выполнению другого запроса ввода-вывода. Кроме того, планировщик ввода-вывода может упорядочить запросы секторов для всех файлов, которые вы пытаетесь переместить, чтобы головки чтения/записи на HDD (очевидно, не так много на USB-носителях) могли перемещаться как можно меньше.
Учитывая это, преимущества параллельной работы по производительности будут минимальными, если только у вас нет сильной фрагментации файловой системы (чтобы избежать перемещения головок чтения/записи по всему периметру).
Однако если вас беспокоит производительность, я бы убедился, что планировщик вашего USB-носителя работает в режиме "noop", чтобы он не тратил время на переупорядочивание запросов, когда это не имеет значения для одноразовой записи на носитель без головок чтения/записи. Если ваш штатный планировщик HDD - cfq, вы также можете попробовать использовать магию ionice для приоритета операций mv над всем остальным, что происходит в системе.