Bash:检查目录是否仅包含具有特定后缀的文件

只有

我正在尝试编写一个脚本,该脚本将检查目录是否仅包含特定类型的文件(和/或文件夹),并且将为false返回1,为true返回0。

IE:我想检查是否/my/dir/仅包含*.gz文件,而没有其他内容。

到目前为止,这是我所拥有的,但似乎并未按预期工作:

# Basic vars
readonly       THIS_JOB=${0##*/}
readonly       ARGS_NBR=1


declare        dir_in=$1


dir_in=$1"/*.gz"
#echo $dir_in

files=$(shopt -s nullglob dotglob; echo ! $dir_in)
echo $files

if (( ${#files} ))
then
    echo "Success: Directory contains files."
    exit 0
else
    echo "Failure: Directory is empty (or does not exist or is a file)"
    exit 1
fi
卡米尔库克

我想检查/ my / dir /是否仅包含* .gz文件,而没有其他文件。

使用find代替球状化。使用find和解析查找输出确实更容易对于简单的脚本而言,通配符很简单,但是一旦您要解析“目录中的所有文件”并进行一些过滤等操作,使用起来就会更容易(更安全)find

find "$1" -mindepth 1 -maxdepth 1 \! -name '*.gz' -o \! -type f | wc -l | xargs test 0 -eq

这将查找*.gz目录中未命名或不是文件(因此mkdir a.gz已解决)的所有“事物” ,对它们进行计数,然后测试它们的计数是否等于0。如果计数等于0,xargs test 0 -eq将返回0,否则返回1 - 125您可以根据需要使用简单的方法来处理非零返回状态|| return 1

您可以xargs通过简单的bash替换将其删除,并使用该线程中的方法以加快速度并获得test返回值,即0or 1

[ 0 -eq "$(find "$1" -mindepth 1 -maxdepth 1 \! -name '*.gz' -o \! -type f -print '.' | wc -c)" ]

请记住,脚本的退出状态是最后执行的命令的退出状态。因此,如果您愿意的话,您不需要脚本中的其他任何东西,只需一个shebang和这个oneliner就足够了。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

检查目录是否仅包含目录并禁止输出

来自分类Dev

Bash脚本-检查文件是否包含特定行

来自分类Dev

检查数组是否包含具有特定属性值的对象

来自分类Dev

是否可以仅包含文件的特定div?

来自分类Dev

c#检查文件路径是否包含特定目录

来自分类Dev

检查集合是否包含具有特定属性的元素

来自分类Dev

检查是否存在具有特定大小的文件夹

来自分类Dev

检查目录是否包含特定的子目录

来自分类Dev

检查目录是否包含具有给定扩展名的文件

来自分类Dev

如何检查参数是否同时具有文件名和路径或仅文件名

来自分类Dev

通过使用具有特定条件的数组编写bash脚本以检查目录中的文件名

来自分类Dev

如何检查文件是否仅包含整数?

来自分类Dev

检查目录中是否有1个或多个特定文件?

来自分类Dev

检查目录是否仅包含隐藏文件而不包含目录

来自分类Dev

Bash-检查我是否对任何目录路径的父目录具有写权限

来自分类Dev

检查数组是否包含具有特定属性值的对象

来自分类Dev

如何仅复制目录中具有特定文件的目录

来自分类Dev

Bash脚本-检查文件是否包含特定行

来自分类Dev

我可以检查目录是否仅包含部分名称吗?

来自分类Dev

如何检查目录是否包含名称包含特定字符串的文件?

来自分类Dev

检查文件是否包含特定模式?

来自分类Dev

检查特定目录中的文件是否具有正确的扩展名?

来自分类Dev

使用正则表达式检查特定目录是否具有以特定单词开头的文件夹

来自分类Dev

从目录中的所有文件中删除特定的后缀

来自分类Dev

在bash中:仅当文件早于X分钟时,如何查找和删除包含特定文件的目录

来自分类Dev

检查目录中是否有文件包含常量文件中的单词

来自分类Dev

如何检查文件夹是否包含具有特定路径的n个文件

来自分类Dev

CMake - 检查目录是否包含特定类型的文件

来自分类Dev

Bash - 检查子目录是否包含文件夹

Related 相关文章

  1. 1

    检查目录是否仅包含目录并禁止输出

  2. 2

    Bash脚本-检查文件是否包含特定行

  3. 3

    检查数组是否包含具有特定属性值的对象

  4. 4

    是否可以仅包含文件的特定div?

  5. 5

    c#检查文件路径是否包含特定目录

  6. 6

    检查集合是否包含具有特定属性的元素

  7. 7

    检查是否存在具有特定大小的文件夹

  8. 8

    检查目录是否包含特定的子目录

  9. 9

    检查目录是否包含具有给定扩展名的文件

  10. 10

    如何检查参数是否同时具有文件名和路径或仅文件名

  11. 11

    通过使用具有特定条件的数组编写bash脚本以检查目录中的文件名

  12. 12

    如何检查文件是否仅包含整数?

  13. 13

    检查目录中是否有1个或多个特定文件?

  14. 14

    检查目录是否仅包含隐藏文件而不包含目录

  15. 15

    Bash-检查我是否对任何目录路径的父目录具有写权限

  16. 16

    检查数组是否包含具有特定属性值的对象

  17. 17

    如何仅复制目录中具有特定文件的目录

  18. 18

    Bash脚本-检查文件是否包含特定行

  19. 19

    我可以检查目录是否仅包含部分名称吗?

  20. 20

    如何检查目录是否包含名称包含特定字符串的文件?

  21. 21

    检查文件是否包含特定模式?

  22. 22

    检查特定目录中的文件是否具有正确的扩展名?

  23. 23

    使用正则表达式检查特定目录是否具有以特定单词开头的文件夹

  24. 24

    从目录中的所有文件中删除特定的后缀

  25. 25

    在bash中:仅当文件早于X分钟时,如何查找和删除包含特定文件的目录

  26. 26

    检查目录中是否有文件包含常量文件中的单词

  27. 27

    如何检查文件夹是否包含具有特定路径的n个文件

  28. 28

    CMake - 检查目录是否包含特定类型的文件

  29. 29

    Bash - 检查子目录是否包含文件夹

热门标签

归档