如何使用bash中的if条件打印文件

用户名

说我的目录中有三个文件 dir

touch a.ym b.ym a.job 

*.ym如果没有相应的*.job文件,我需要全部打印所以我尝试了

for file in $(find ${dir} -name \*.ym);do
    filebase=$(basename $file)
    sample_id=$(echo "${filebase}"| awk -F'[.]' '{print $1}')
    if  [[ $sample_id != *".job" ]]; then
          echo "${file}"
    fi
done

但是,上述解决方案是同时打印

a.ym b.ym文件,我只b.ym需要打印出文件

ctt

在Bash中:

为确保使用bash解释程序运行可执行脚本,确保脚本中的第一个字符是#!,后面是将调用的命令,这一点很重要bash第一行的示例是:

#!/bin/bash

通常,不匹配任何内容的glob模式的扩展将导致原始glob模式。在我们的情况下,这是不希望的。为了使不匹配的glob评估为空文件列表,需要nullglob启用以下选项:

shopt -s nullglob

下面的表达式求文件的名称在两端的名单.ym,在目录内$dir

"$dir"/*.ym

以下内容计算为文件的文件名前缀$file

"${file%.*}"

检查文件是否不存在的条件是:

if [[ ! -f "${file}" ]]; then
  ... the file does not exist ...
fi

结合这些点,将产生以下脚本:

#!/bin/bash

shopt -s nullglob

for file in "$dir"/*.ym; do
  if [[ ! -f "${file%.*}.job" ]]; then
    echo "$file"
  fi
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用bash从文件中打印特定列?

如何使用 | 打印文件的最后修改时间 在 BASH 中?

如何使用bash脚本将所有jar结果打印到文件中

如何从bash中的文件循环打印2列

使用bash脚本从.CSV文件中打印多个值

使用bash使用条件打印到屏幕

使用Bash,如何打印.txt文件的第一行中包含特定字符串的整行?

如何根据时间条件在bash中拆分日志文件

Bash:如何在文件夹中打印第n个文件的文件名

Bash - 使用从文件中读取的条件中断循环

使用bash的条件文件输入

如何使用Bash引用文件中的变量?

如何使用awk打印文件中的第n列

如何使用javap工具在jar文件中打印类结构?

如何使用flink打印文件中的总行数

如何使用python从文件中打印字典的值

如何使用python在HTML文件中打印嵌套列表?

如何使用awk打印文件中的第n列?

如何使用用户输入从文件中打印整行

如何使用分隔符从文件中打印列?

如何使用函数在C中打印出文件的内容?

如何使用golang打印HTML文件中的特定內容?

如何在bash中打印以给定文件名作为stdin的文件的内容?

如何在bash中从文件到文件打印printf文字字符?

如何使bash shell脚本使用jq解析JSON文件,然后将结果打印到PHP文件?

在bash中以特定顺序打印文件内容

使用bash打印其来源的文件

如何根据条件(大于或小于)打印出文本文件中的特定行/行

如何在条件下使awk打印多行匹配文件文本中的字符串?