Сценарий оболочки, выполняющий программу, работающую с несколькими входными файлами.

.deb el paquete de VirtualBox depende de libqxcb externamente (no viene incluido ), al instalarlo y ejecutar VirtualBox me mostró este error:

$ VirtualBox
Qt FATAL: This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: minimal, offscreen, xcb.

Reinstalling the application may fix this problem.
Aborted

Incluso encontrar paquetes rotos por ldd y crear sus enlaces blandos no me ayudó.

Pero en el paquete .run , no mostró ningún error de este tipo porque el paquete .run viene con todas las dependencias incluidas.

Todavía no pude encontrar la solución a este error, pero aquí hay una solución alternativa puede intentar ejecutar VirtualBox desinstalando la versión actual y luego instalando .run paquete:

wget https://download.virtualbox.org/virtualbox/5.2.12/VirtualBox-5.2.12-122591-Linux_amd64.run
chmod +x VirtualBox-5.2.12-122591-Linux_amd64.run
sudo./VirtualBox-5.2.12-122591-Linux_amd64.run

Otra solución es limpiar la compilación Qt del sistema y volver a crearla, pero lleva mucho tiempo, así que elegí este método.

1
05.07.2019, 20:24
3 ответа

Для этого можно использовать программу GNU Parallel:

find. -name \*.txt | grep -v -e '\-s.txt$' | parallel echo program "{}" {.}-s.txt
program./1 2.txt./1 2-s.txt
program./aaa.txt./aaa-s.txt
program./bbb.txt./bbb-s.txt
program./demo.txt./demo-s.txt
program./original_names.txt./original_names-s.txt
1
27.01.2020, 23:22

Кажется, вы хотите что-то подобное:

for src; do
  dst="${src%.txt}-s.txt"
  program "$src" "$dst"
done

Вызовите сценарий с именами файлов, которые вы хотите обработать. Ключевой частью является "${src%.txt}-s.txt", он удаляет расширение .txtи добавляет -s.txt.

1
27.01.2020, 23:22

Предполагая, что вы в настоящее время вызываете свою программу с двумя аргументами как cmd input-file output-file, вы можете просто написать сценарий-оболочку как:

#!/bin/sh
for file; do 
    output="${file%.txt}"-s.txt
    cmd "$file" "$output" &
done

Затем вызовите скрипт, указав несколько входных данных в качестве аргументов. Это решение предполагает, что все ваши входные файлы имеют .txtсуффикс (ну, на самом деле это не предполагается, но имена выходных файлов будут неверными, если они не ). Обратите внимание, что это потенциально перезапишет существующие выходные файлы; добавьте немного логики для проверки предыдущего существования, если вы беспокоитесь об этом. Вероятно, безопаснее создать каталог и поместить все ваши выходные файлы в новый каталог, чтобы избежать этой проблемы. Или, если вы хотите прочитать имена файлов из ввода :(, например, вы можете вызвать скрипт с помощью < my-file-full-of-input-files-one-per-line./my-script), напишите его как:

#!/bin/sh
while read file; do
    output="${file%.txt}"-s.txt
    cmd "$file" "$output" &
done
1
27.01.2020, 23:22

Теги

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