相关疑难解决方法(0)

检查shell脚本中是否存在带通配符的文件

我正在尝试检查文件是否存在,但是使用通配符.这是我的例子:

if [ -f "xorg-x11-fonts*" ]; then
    printf "BLAH"
fi
Run Code Online (Sandbox Code Playgroud)

我也尝试过没有双引号.

shell wildcard sh

264
推荐指数
11
解决办法
30万
查看次数

检查目录中是否存在某种文件类型/扩展名

你会怎样用bash来判断某个目录中是否存在特定扩展名的文件?

就像是

if [ -e *.flac ]; then 
echo true; 
fi 
Run Code Online (Sandbox Code Playgroud)

linux bash shell

62
推荐指数
4
解决办法
7万
查看次数

快速命令

我必须得到一个包含大约200万个文件的目录列表,但是当我ls对它执行命令时,什么都没有回来.我等了3个小时.我试过了ls | tee directory.txt,但这似乎永远挂了.

我假设服务器正在进行大量的inode排序.有没有办法加快ls命令只是获取文件名的目录列表?我此时并不关心大小,日期,许可等.

unix bash command ls

36
推荐指数
8
解决办法
2万
查看次数

使用 ruby​​ 检查是否有任何文件或目录匹配模式

我想检查带有通配符的模式是否与/var/data/**/*.xml磁盘上的任何文件或目录匹配。

显然我可以使用,Dir.glob但是当有数百万个文件时它非常慢,因为它太急切了 - 它返回与模式匹配的所有文件,而我只需要知道是否有任何文件。

有什么办法可以检查吗?

ruby

5
推荐指数
1
解决办法
1737
查看次数

在bash if语句中使用通配符

我在bash shell中编写了以下代码.它应该采用位置参数,如果它以短划线" - "开头,则应该输入错误消息.

但由于某种原因,if语句总是被跳过.它只有在字面上输入时才起作用 - *

我得到的印象是修复与"$"有关.

以下是代码片段:

    EXECNAME=$1
    if [ "$EXECNAME" = "-*" ]; then
           echo "error: invalid executable name"
    fi
Run Code Online (Sandbox Code Playgroud)

bash shell sh

3
推荐指数
1
解决办法
8948
查看次数

如何在 bash shell 的 if 语句中使用 ls 命令的输出

在继续处理该文件之前,我想检查是否只有一个文件实例存在。

我可以使用以下命令检查存在多少个实例:

ls -l $INPUT_DIR/${INPUT_FILE_PREFIX}cons*.csv.gz | wc -l;
Run Code Online (Sandbox Code Playgroud)

但是,当我在 if 语句中使用它时,会警告我ls: command not found.

if [ls -l $INPUT_DIR/${INPUT_FILE_PREFIX}cons*.csv.gz | wc -l = '1']
 then
 echo "Only 1 File Exists";
fi
Run Code Online (Sandbox Code Playgroud)

我尝试在 ls 命令的末尾添加一个分号并将其括在方括号中 - 这些都没有产生任何结果。

我很少需要编写任何 Shell 脚本,我怀疑这是一个非常基本的错误,因此非常感谢任何帮助。

bash shell

3
推荐指数
1
解决办法
5434
查看次数

在 bash 中检查文件的正则表达式

是否可以在bash中使用正则表达式检查文件是否存在?

我尝试如下:

if [ -f /path/to/file*.txt ]
Run Code Online (Sandbox Code Playgroud)

但不幸的是这不起作用。

有谁知道这怎么可能?

regex bash file

2
推荐指数
1
解决办法
7739
查看次数

检查bash中是否至少存在一个文件

我有这个

if [[ -e file.jpg ]] ;then echo "aaaaaaaaa"; fi
Run Code Online (Sandbox Code Playgroud)

并打印出"aaaaaaa"

但是如果还有file.png或file.png我想要打印

所以我需要这样的东西

if [[ -e file.* ]] ;then echo "aaaaaaaaa"; fi
Run Code Online (Sandbox Code Playgroud)

但它不起作用我在语法中遗漏了一些东西

谢谢

bash shell scripting

2
推荐指数
1
解决办法
3600
查看次数

为什么bash文档建议引用通配符?

在几个手册(包括官方GNU/Linux命令行工具tldp.org)中,建议使用单引号(或双引号)来避免bash解释通配符或正则表达式符号,如插入符号(^)和美元($).

但在一些例子中,没有必要使用单/双引号.例如:

(1)

$ touch 'fo*'
Run Code Online (Sandbox Code Playgroud)

$ touch fo*
Run Code Online (Sandbox Code Playgroud)

fo*在两个命令行窗体中创建相同的文件.

(2)

$ grep '^foo' file.txt
Run Code Online (Sandbox Code Playgroud)

$ grep ^foo file.txt
Run Code Online (Sandbox Code Playgroud)

foo在file.txt行的开头搜索一个字符串.

为什么手册建议使用单/双引号来避免bash解释,如果bash实际上不首先解释一些通配符和正则表达式符号?

linux bash wildcard

1
推荐指数
1
解决办法
398
查看次数

测试一个 glob 在 bash 中是否只有一个匹配并获取它

问题“测试 glob 在 bash 中是否有任何匹配项”,它的答案非常好。

但是,我想知道如何测试 glob 在 bash 中是否只有一个匹配项以及是否存在分配给一个变量。

我该怎么做?

bash glob

1
推荐指数
1
解决办法
822
查看次数

标签 统计

bash ×8

shell ×5

linux ×2

sh ×2

wildcard ×2

command ×1

file ×1

glob ×1

ls ×1

regex ×1

ruby ×1

scripting ×1

unix ×1