连接或删除目录中的多个文件

连接或删除目录中的多个文件

通常,对于具有相同扩展名的文件串联,我们使用 cat *.txt。但如果我们位于不同的目录中并尝试连接另一个目录的文件该怎么办?我写了一个 shell 脚本,其中包含以下语句

cat /home/tarakaramji/*.txt

错误:

cat /home/tarakaramji/*.txt no such file or directory

与删除相同扩展名的多个文件相同:

rm /home/tarakaramji/*.txt 

答案1

听起来您.txt指定的目录中没有任何文件,或者您完全得到了错误的目录。这里发生的情况是,默认情况下,如果 shell 找不到任何文件,它将使用文字/home/tarakaramji/*.txt作为cat.由于也不存在具有该名称的文件,这就是您收到错误的原因。

您始终可以通过执行第一个操作来准确查看要使用的文件echo,例如

echo /home/tarakaramji/*.txt

应该只显示/home/tarakaramji/*.txt.如果设置nullglobshell 选项,则会阻止使用文字,因此实际上不会有参数:

shopt -s nullglob
echo /home/tarakaramji/*.txt

在这种情况下cat不会给出错误,它只会从stdin.

相关内容