Как объединить списки файлов с помощью sed?

Прежде всего: вы используете Wine, который в этом случае может потребовать воссоздать что-то, что имитирует среду выполнения командной оболочки Windows (cmd.exe).

Поскольку у вас нет сказал drive_c/Program\ Files\ \(x86\)/LINE/Line.exe, что нет возможности рассказать о своих требованиях.

Теперь : ambiguous redirect1: 1 выглядит как возможный вывод либо из Wine, либо из cmd.exe.

Может быть, вы необходимо убедиться, что ONLY WINE зависит от перенаправления стиля Linux. Возможно, вам придется посмотреть, что ожидает от Wine, и как защитить / отделить его параметры от тех, что были захвачены bash и vise versa.

Что нужно попробовать: поскольку это работает из командной строки bash, попробуйте source line2 для начала.

Если это работает, возможно, попробуйте вариант вроде этого - из сценария: bash <<EOF wine /home/aiao/.wine/drive_c/Program\ Files\ (x86)/LINE/Line.exe > /dev/null 2>&1 EOF

Еще один ... start - это инструмент командной строки Windows, который применяет те же задачи, что и двойной щелчок, например ссылку или файл, поэтому попробуйте:

wine start /home/aiao/.wine/drive_c/Program\ Files\ \(x86\)/LINE/Line.exe

Примечание: БЕЗ перенаправления, если это работает, чтобы фактически запустить программу, тогда - если вам все еще нужно, вы можете попробовать добавить >/dev/null 2>&1 ( или что-то другое от других ответов) для Wine.

0
задан 11 November 2017 в 01:52

3 ответа

Ты лай на луне. Просто используйте редиректор добавления >> вместо редиректора записи >:

touch AllDirectoriesFileInfo.txt
ls -r /home/tony/Desktop/jpgfolder >> AllDirectoriesFileInfo.txt
ls -r /home/tony/Desktop/giffolder >> AllDirectoriesFileInfo.txt
ls -r /home/tony/Desktop/docxfolder >> AllDirectoriesFileInfo.txt
ls -r /home/tony/Desktop/dregsfolder >> AllDirectoriesFileInfo.txt

Или забудьте о добавлении и просто укажите ls несколько аргументов:

ls -r /home/tony/Desktop/jpgfolder /home/tony/Desktop/giffolder /home/tony/Desktop/docxfolder /home/tony/Desktop/dregsfolder >> AllDirectoriesFileInfo.txt
[d2 ] Упрощенный:

ls -r ~tony/Desktop/{jpgfolder,giffolder,docxfolder,dregsfolder} >> AllDirectoriesFileInfo.txt

Еще короче, если tony является вашим именем пользователя:

ls -r ~/Desktop/{jpg,gif,docx,dregs}folder >> AllDirectoriesFileInfo.txt

Хотя, если вы собираетесь делая любую обработку данных в файле, вы захотите использовать find вместо ls, так как в общем случае ls выводит данные для людей для чтения, а find выводит вывод для компьютеров для чтения. В частности, в этом случае find перечисляет файл и его путь вместе.

Вот краткий пример:

$ mkdir dir1 dir2
$ touch {dir1,dir2}/file1
$ ls -r dir1 dir2 > ls_r_out.txt

Теперь скажите, что я хочу искать «file1»: [ ! d8]

$ grep 'file1$' ls_r_out.txt
file1
file1

Хорошо, это не очень полезно, потому что это не говорит мне и файлы. Я попробую тот же процесс с find. Теперь find не поддерживает сортировку, поэтому мне придется пропустить через sort:

$ find dir1 dir2 | sort -r > find_reverse_out.txt
$ grep 'file1$' find_reverse_out.txt 
dir2/file1
dir1/file1

Voila. Обратите внимание, что это становится более сложным, если имена файлов содержат специальные символы, такие как символы новой строки.

3
ответ дан 22 May 2018 в 16:20

Ты лай на луне. Просто используйте редиректор добавления >> вместо редиректора записи >:

touch AllDirectoriesFileInfo.txt ls -r /home/tony/Desktop/jpgfolder >> AllDirectoriesFileInfo.txt ls -r /home/tony/Desktop/giffolder >> AllDirectoriesFileInfo.txt ls -r /home/tony/Desktop/docxfolder >> AllDirectoriesFileInfo.txt ls -r /home/tony/Desktop/dregsfolder >> AllDirectoriesFileInfo.txt

Или забудьте о добавлении и просто укажите ls несколько аргументов:

ls -r /home/tony/Desktop/jpgfolder /home/tony/Desktop/giffolder /home/tony/Desktop/docxfolder /home/tony/Desktop/dregsfolder >> AllDirectoriesFileInfo.txt

Упрощенный:

ls -r ~tony/Desktop/{jpgfolder,giffolder,docxfolder,dregsfolder} >> AllDirectoriesFileInfo.txt

Еще короче, если tony является вашим именем пользователя:

ls -r ~/Desktop/{jpg,gif,docx,dregs}folder >> AllDirectoriesFileInfo.txt

Хотя, если вы собираетесь делая любую обработку данных в файле, вы захотите использовать find вместо ls, так как в общем случае ls выводит данные для людей для чтения, а find выводит вывод для компьютеров для чтения. В частности, в этом случае find перечисляет файл и его путь вместе.

Вот краткий пример:

$ mkdir dir1 dir2 $ touch {dir1,dir2}/file1 $ ls -r dir1 dir2 > ls_r_out.txt

Теперь скажите, что я хочу искать «file1»: [ ! d8] $ grep 'file1$' ls_r_out.txt file1 file1

Хорошо, это не очень полезно, потому что это не говорит мне и файлы. Я попробую тот же процесс с find. Теперь find не поддерживает сортировку, поэтому мне придется пропустить через sort:

$ find dir1 dir2 | sort -r > find_reverse_out.txt $ grep 'file1$' find_reverse_out.txt dir2/file1 dir1/file1

Voila. Обратите внимание, что это становится более сложным, если имена файлов содержат специальные символы, такие как символы новой строки.

3
ответ дан 18 July 2018 в 03:31

Ты лай на луне. Просто используйте редиректор добавления >> вместо редиректора записи >:

touch AllDirectoriesFileInfo.txt ls -r /home/tony/Desktop/jpgfolder >> AllDirectoriesFileInfo.txt ls -r /home/tony/Desktop/giffolder >> AllDirectoriesFileInfo.txt ls -r /home/tony/Desktop/docxfolder >> AllDirectoriesFileInfo.txt ls -r /home/tony/Desktop/dregsfolder >> AllDirectoriesFileInfo.txt

Или забудьте о добавлении и просто укажите ls несколько аргументов:

ls -r /home/tony/Desktop/jpgfolder /home/tony/Desktop/giffolder /home/tony/Desktop/docxfolder /home/tony/Desktop/dregsfolder >> AllDirectoriesFileInfo.txt

Упрощенный:

ls -r ~tony/Desktop/{jpgfolder,giffolder,docxfolder,dregsfolder} >> AllDirectoriesFileInfo.txt

Еще короче, если tony является вашим именем пользователя:

ls -r ~/Desktop/{jpg,gif,docx,dregs}folder >> AllDirectoriesFileInfo.txt

Хотя, если вы собираетесь делая любую обработку данных в файле, вы захотите использовать find вместо ls, так как в общем случае ls выводит данные для людей для чтения, а find выводит вывод для компьютеров для чтения. В частности, в этом случае find перечисляет файл и его путь вместе.

Вот краткий пример:

$ mkdir dir1 dir2 $ touch {dir1,dir2}/file1 $ ls -r dir1 dir2 > ls_r_out.txt

Теперь скажите, что я хочу искать «file1»: [ ! d8] $ grep 'file1$' ls_r_out.txt file1 file1

Хорошо, это не очень полезно, потому что это не говорит мне и файлы. Я попробую тот же процесс с find. Теперь find не поддерживает сортировку, поэтому мне придется пропустить через sort:

$ find dir1 dir2 | sort -r > find_reverse_out.txt $ grep 'file1$' find_reverse_out.txt dir2/file1 dir1/file1

Voila. Обратите внимание, что это становится более сложным, если имена файлов содержат специальные символы, такие как символы новой строки.

3
ответ дан 24 July 2018 в 17:51

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

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