【问题标题】:Open files by zenity and process it one by one按zenity打开文件并一一处理
【发布时间】:2015-04-30 11:59:17
【问题描述】:

我想用这个脚本按 zenity 打开 5 个文件,但每个文件将分别处理(通过“do”)。有可能吗?

FILES=($(zenity --file-selection --multiple --title "Pick a file"))

    for i in "$FILES"
    do
    fastx_quality_stats -i $i -o ${i%.fastq}quality.txt 
    bash /home/fil/Desktop/Pipeline_MISEQ/fastq_quality_boxplot_graph.sh -i ${i%.fastq}quality.txt -o ${i%fastq}quality_distribution.png
    bash fastx_nucleotide_distribution_graph.sh -i ${i%.fastq}quality.txt -o ${i%.fastq}distribuiton_nucleotides.png
    mv *quality.txt *.png fastq_stat/  
    done    

【问题讨论】:

  • 你能解释一下“将被单独处理”是什么意思吗?
  • 我选择了5个文件,每个文件在做完后都会被脚本处理。所以我选择文件 1 2 3 4 5 并且在第一个循环中将是进程 1 在第二个循环中将是进程 2 文件等。

标签: bash load zenity


【解决方案1】:

问题是文件名之间的默认分隔符似乎是|(至少在我的机器上),所以你必须使用--separator选项才能直接使用结果:

FILES=$(zenity --file-selection --multiple --separator=' ' --title "Pick a file")
for f in $FILES ; do
  echo "File: $f"
done

【讨论】:

  • 这真是个好主意,我错过了。现在我没有收到错误,但结果仅适用于第一个选定的样本:(
  • 嗯:它对我有用。你真的选择了几个文件(使用 Shift 和/或 Ctrl 键)?
  • 是的,我做到了 :-) 如果我使用 echo,我会正确接收所有文件的名称。但是对于我的管道是不是问题,我只收到第一个文件的结果:-(
  • 那么使用echo,您看到循环按预期工作了吗?所以这不再是zenity 问题了......
  • 我从 echo 文件中收到这个:/home/fil/Desktop/MISEQ/7102-14_S6_L001_R1_001.fastq /home/fil/Desktop/MISEQ/7102-14_S6_L001_R2_001.fastq /home/fil/Desktop/ MISEQ/7123-14_S8_L001_R1_001.fastq /home/fil/Desktop/MISEQ/7123-14_S8_L001_R2_001.fastq 但是如果我只选择一个文件,一切正常。如果我选择更多文件,我只会收到第一个文件的一个结果。如果回显结果将是: 文件:/home/fil/Desktop/MISEQ/7102-14_S6_L001_R1_001.fastq 文件:/home/fil/Desktop/MISEQ/7102-14_S6_L001_R2_001.fastq 文件:/home/fil/Desktop/MISEQ/7123 -14_S8_L001_R1_001.fastq 等会更好
【解决方案2】:

试试这个方法(注意--separator参数):

#! /bin/bash

OLDIFS="$IFS"
IFS='-'
FILES=($(zenity --file-selection --multiple --separator='-' --title "Pick a file"))
IFS="$OLDIFS"

for file in "${FILES[@]}"
do
    echo $file
done

参考:https://askubuntu.com/questions/579948/can-simple-scripts-use-gui-file-manager-to-select-file

【讨论】:

  • 它不起作用。 “fastx_quality_stats:无法打开输入文件'/home/fil/Desktop/MISEQ/7102-14_S6_L001_R1_001.fastq|/home/fil/Desktop/MISEQ/7102-14_S6_L001_R2_001.fastq|/home/fil/Desktop/MISEQ/7123- 14_S8_L001_R1_001.fastq':没有这样的文件或目录“
猜你喜欢
  • 2013-03-07
  • 2010-09-08
  • 2023-03-28
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
相关资源
最近更新 更多