在 RedHat 7.7 中使用 grep
Using grep with RedHat 7.7
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
选项
我建议 shell 使用 globs 的循环解决方案
for d in *; do echo "$d"; ls -1 "$d"/*.gz; echo; done
for d in *
将遍历当前工作目录中的所有 files/directories。我假设你只有目录
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)$/
找到所有 empty
、以 :
结尾或以 .gz
结尾的行并打印它们。
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
选项
我建议 shell 使用 globs 的循环解决方案
for d in *; do echo "$d"; ls -1 "$d"/*.gz; echo; done
for d in *
将遍历当前工作目录中的所有 files/directories。我假设你只有目录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)$/
找到所有empty
、以:
结尾或以.gz
结尾的行并打印它们。