Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
Bash 当cut cmd不工作时,如何仅显示文件名?_Bash - Fatal编程技术网

Bash 当cut cmd不工作时,如何仅显示文件名?

Bash 当cut cmd不工作时,如何仅显示文件名?,bash,Bash,我发现所有文件都以.sh结尾,但需要只显示文件名,不显示文件名/ (find -type f \( -name "*[.sh]" \) ) 它给了我所有以.sh结尾的文件和子目录: ./erj.sh ./another/r5.sh ./another/t9.sh ./another/rrr2.sh ./elro/2039jlfsdjf.sh ./elro/tlr.sh ./elro/823.sh ./222.sh ./my_find_sh ./rrr.sh ./4234.sh ./sdf.s

我发现所有文件都以.sh结尾,但需要只显示文件名,不显示文件名/

(find -type f \( -name "*[.sh]" \) ) 
它给了我所有以.sh结尾的文件和子目录:

./erj.sh
./another/r5.sh
./another/t9.sh
./another/rrr2.sh
./elro/2039jlfsdjf.sh
./elro/tlr.sh
./elro/823.sh
./222.sh
./my_find_sh
./rrr.sh
./4234.sh
./sdf.sh
但使用“cut-d.-f1”会得到空输出,因为它将第一个点作为删除点

find -type f \( -name "*[.sh]" \)  | cut -d. -f1
给出空行。

尝试以下操作:

find -type f \( -name "*.sh" \) -printf "%f\n"

使用find和Bash内置字符串替换:

find . -type f -name '*.sh' -printf "%P\n" | while read -r F; do echo ${F%.*}; done
或者在循环结束后需要访问在循环中创建的变量时使用流程替代

while IFS= read -r F; do echo "${F%.*}"; done < <(find . -type f -name '*.sh' -printf "%P\n")

而IFS=read-rf;执行回显“${F%.*}”;完成<虽然其他用户提出的备选方案完全正确,但为了严格使用您发布的命令获得您想要的输出,您应该在使用
cut
时选择第二个字段而不是第一个字段。此外,我认为在这种情况下根本不需要括号,因为它不会有任何区别

也就是说,您可以尝试:

find -type f -name "*.sh" | cut -d\. -f2

<代码> %f>代码> > Prtff<代码>可能有助于GNU查找。您可以考虑<代码>查找*-类型F -名称“*.SH”< /代码>。这不是为您做的:也不完全清楚您想要什么。另请参见-printf“%P”以删除前导。/我同意Philippe的观点:您的模式会查找以点、s或h结尾的文件。thx u,但随后我错误地找到了名称为“Q.shFB”、“ER.HGZofZ.shEZ”、“n.shU~.sh”的文件。我更新了答案:搜索参数不正确,包含了您显示的文件。谢谢sal,但是“.sh”仍然匹配文件名,如“J.shjeG.sh.shqKcITpc”、“.shHWn.shj”嘿。我看不出来:我添加了您的确切文件名,但没有选择它们。我在Ubuntu 20.04上。我还可以正确地执行
find-type f-name*.sh-printf“%f\n”
,并且它与那些伪文件不匹配。啊,当然。我把这个问题解释为
cut
不可用或损坏。说我只是在掩饰我对
cut
;-)的无知thx u,但是我如何检测像sk.CBlsLtz.sh.shs.shKaU这样的文件名“@ERJAN这种情况似乎与这个问题不同。如果你愿意,你可以打开一个新的,用更多细节和你期望得到的输出解释你的上下文,这样我们就可以进一步查看它了。@hads0m地狱thx我想”我如何编辑问题并让其他人知道这是一个不同的问题?“好的,我再问一个问题