Как я могу использовать xargs для создания программных ссылок из моих html-файлов? - PullRequest
0 голосов
/ 25 мая 2019

Проблема в том, что у меня есть каталог, полный HTML-файлов. Однако, когда я открываю папку в Firefox, трудно ориентироваться, потому что, когда я открываю папку, появляются также все связанные HTML-папки.

Я протестировал, используя ln -s только html для отдельного каталога просмотра, и протестировал его, и он работал.

Теперь моя проблема - попытаться настроить эти ln -s для сотен файлов, но я не могу понять, как это сделать. Я думал, что лучшим способом было бы использовать xargs на ls выводе, но я не могу заставить работать синтаксис.

Я считаю, что моя проблема в том, что мне нужно разобрать два набора аргументов для ln -s, но я не могу заставить его работать

Я пробовал много разных вариантов ниже, но не могу заставить синтаксис работать. Я также пытался использовать параллельную версию gnu, но все еще не могу понять синтаксис правильно.

ls Downloads (filenames) | grep html | xargs ln -s ~\Downloads\(filenames) ~\ViewingDirectory\(filename)

Любая помощь будет оценена. Спасибо.

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Вы неправильно понимаете использование xargs.И вы анализируете вывод ls, который обычно считается плохой идеей.

Лучшее решение было бы:

for f in ~\Downloads\*.html ; do
    b=$(basename "$f")
    ln -s "$f"  ~\ViewingDirectory\"$b"
done
0 голосов
/ 25 мая 2019

Если вы настаиваете на использовании xargs, вы можете сделать это, например, следующим образом:

find ~/Downloads/ -type f -name '*.html' \
    | xargs -I@ sh -c 'ln -s @ ~/ViewingDirectory/"$(basename @)"'

Теперь, с помощью xargs вы можете параллельно выполнять вызовы ln, используя -P флаг:

find ~/Downloads/ -type f -name '*.html' \
    | xargs -P"$(nproc)" -I@ sh -c 'ln -s @ ~/ViewingDirectory/"$(basename @)"'

, где nproc возвращает количество доступных единиц обработки.

...