перенаправление вывода `ls` на другую команду с помощью xargs

Просто, с помощью printf:

while read number
do
  printf '        "new-request-uri-user-part:%s": {
            "query_string": {
              "query": "new-request-uri-user-part:%s",
              "analyze_wildcard": true
            }
          },
' "$number" "$number"
done < input
1
26.07.2019, 10:24
2 ответа

Мой предпочтительный подход к этому был бы примерно таким:

for SAM_FILE in *.sam; do
    samtools view -Sb "$SAM_FILE" > "${SAM_FILE/sam/bam}"
done

Который можно превратить в один вкладыш, например

for SAM_FILE in *.sam; do samtools view -Sb "$SAM_FILE" > "${SAM_FILE/sam/bam}"; done

При этом используется расширение параметра для изменения расширения выходного файла. :https://wiki.bash-hackers.org/syntax/pe

По моему мнению, этот стиль дает понять, что вы пытаетесь сделать, если позже вы или кто-то другой наткнетесь на ваши сценарии.

6
28.04.2021, 23:31

Моя команда работала с небольшими изменениями, и я считаю, что она проще и менее многословна, чем цикл for:

ls *.sam | cut -d "_" -f 1 | xargs -I {} bash -c " samtools view -Sb {}_aligned_minimap.sam > {}_aligned_minimap.bam"
0
28.04.2021, 23:31

Теги

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