Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在RedHat 7.7中使用grep_Linux_Grep_Redhat - Fatal编程技术网

Linux 在RedHat 7.7中使用grep

Linux 在RedHat 7.7中使用grep,linux,grep,redhat,Linux,Grep,Redhat,ls*输出: dossier_1: vc.all.2019.09.17.Tue.gz vc.all.2019.09.19.Thu.gz vc.all.2019.09.21.Sat.gz vc.all.2019.09.22.Sun.gz vc.all.2019.09.24.Fri.gz vc.all.2019.09.18.Wed.gz vc.all.2019.09.20.Fri.gz vc.all.2019.09.22.Sun vc.all.2019.09.23.Mon

ls*
输出:

dossier_1:
vc.all.2019.09.17.Tue.gz  vc.all.2019.09.19.Thu.gz  vc.all.2019.09.21.Sat.gz  vc.all.2019.09.22.Sun.gz  vc.all.2019.09.24.Fri.gz
vc.all.2019.09.18.Wed.gz  vc.all.2019.09.20.Fri.gz  vc.all.2019.09.22.Sun     vc.all.2019.09.23.Mon     vc.all.2019.09.25.Wed.gz

dossier_2:
vc.all.2019.09.17.Tue.gz  vc.all.2019.09.18.Wed.gz  vc.all.2019.09.19.Thu.gz  vc.all.2019.09.20.Fri.gz  vc.all.2019.09.21.Sat.gz  vc.all.2019.09.22.Sun  vc.all.2019.09.22.Sun.gz  vc.all.2019.09.23.Mon

dossier_3:
vc.all.2019.09.17.Tue.gz  vc.all.2019.09.18.Wed.gz  vc.all.2019.09.19.Thu.gz  vc.all.2019.09.20.Fri.gz  vc.all.2019.09.21.Sat.gz  vc.all.2019.09.22.Sun  vc.all.2019.09.22.Sun.gz  vc.all.2019.09.23.Mon
如果我这样做

ls * | grep -v "gz"
在我的目录中,我发现:

dossier_1:
vc.all.2019.09.22.Sun
vc.all.2019.09.23.Mon

dossier_2:
vc.all.2019.09.22.Sun
vc.all.2019.09.23.Mon

dossier_3:
vc.all.2019.09.22.Sun
vc.all.2019.09.23.Mon

如果需要此输出,命令是什么:


dossier_1:
vc.all.2019.09.17.Tue.gz  
vc.all.2019.09.19.Thu.gz  
vc.all.2019.09.21.Sat.gz  
vc.all.2019.09.22.Sun.gz  
vc.all.2019.09.24.Fri.gz
vc.all.2019.09.18.Wed.gz 
vc.all.2019.09.20.Fri.gz  
vc.all.2019.09.25.Wed.gz


dossier_2:
vc.all.2019.09.17.Tue.gz  
vc.all.2019.09.19.Thu.gz  
vc.all.2019.09.21.Sat.gz  
vc.all.2019.09.22.Sun.gz  
vc.all.2019.09.24.Fri.gz
vc.all.2019.09.18.Wed.gz 
vc.all.2019.09.20.Fri.gz  
vc.all.2019.09.25.Wed.gz


dossier_3:
vc.all.2019.09.17.Tue.gz  
vc.all.2019.09.19.Thu.gz  
vc.all.2019.09.21.Sat.gz  
vc.all.2019.09.22.Sun.gz  
vc.all.2019.09.24.Fri.gz
vc.all.2019.09.18.Wed.gz 
vc.all.2019.09.20.Fri.gz  
vc.all.2019.09.25.Wed.gz

我想显示目录名他自己的文件,扩展名仅为.gz

但我不知道怎么做

你能帮我吗


谢谢大家!

grep-v'gz'
将排除包含
gz
的所有输入行,因此不确定在实际希望保留它们时为什么使用
-v
选项

我建议使用globs的shell循环解决方案

for d in *; do echo "$d"; ls -1 "$d"/*.gz; echo; done
  • *中d的
    将循环当前工作目录中的所有文件/目录。我假设你只有目录
  • echo“$d”
    将显示目录名
    • 如果您希望在目录名的末尾使用冒号字符,请使用
      echo“$d:”
  • ls-1“$d”/*.gz
    将在单列中显示此目录中以
    .gz
    结尾的所有文件
  • echo
    显示空行

    • 这里有一种方法可以使用
      awk

      ls -A1 * | awk '/(^|:|\.gz)$/'
      dossier_1:
      vc.all.2019.09.17.Tue.gz
      vc.all.2019.09.18.Wed.gz
      vc.all.2019.09.19.Thu.gz
      vc.all.2019.09.20.Fri.gz
      vc.all.2019.09.21.Sat.gz
      vc.all.2019.09.22.Sun.gz
      vc.all.2019.09.24.Fri.gz
      vc.all.2019.09.25.Wed.gz
      
      dossier_2:
      vc.all.2019.09.17.Tue.gz
      vc.all.2019.09.18.Wed.gz
      vc.all.2019.09.19.Thu.gz
      vc.all.2019.09.20.Fri.gz
      vc.all.2019.09.21.Sat.gz
      vc.all.2019.09.22.Sun.gz
      
      dossier_3:
      vc.all.2019.09.17.Tue.gz
      vc.all.2019.09.18.Wed.gz
      vc.all.2019.09.19.Thu.gz
      vc.all.2019.09.20.Fri.gz
      vc.all.2019.09.21.Sat.gz
      vc.all.2019.09.22.Sun.gz
      
      • ls-A1*
        列出所有文件夹中的所有文件(仅名称),每次一行
      • /(^ |:| \.gz)$/
        查找所有
        为空、以
        结尾的行:
        或以
        结尾的行,然后打印它们

      谢谢!这正是我需要的!非常感谢。这正是我需要的!