📅  最后修改于: 2023-12-03 15:21:51.001000             🧑  作者: Mango
在Shell/Bash中,我们可以方便地获取命令行参数,例如获取传递给脚本的文件名,然而有时候可能需要获取当前目录下的文件名或者通过管道传递文件名的方式。
对于获取当前目录下的所有文件名,我们可以使用如下命令:
ls
这将返回当前目录下所有文件的名称列表,如果我们只关心某种特定类型的文件,可以使用通配符来限制返回结果。例如,如果我们只想获取所有的txt文件,可以使用如下命令:
ls *.txt
有时候我们可能需要通过管道方式将文件名传递给另一个命令,例如通过grep
命令过滤文件内容。为了将文件名通过管道传递给另一个命令,我们可以使用find
命令来获取文件名,例如:
find . -name '*.txt' | grep 'search_pattern'
这将返回所有txt文件名中包含'search_pattern'的文件名。
在Shell/Bash中,传递给脚本的参数可以通过$1
,$2
,$3
等来引用,其中$1
表示第一个参数,$2
表示第二个参数,以此类推。如果我们想获取所有传递给脚本的参数,可以使用$@
来引用。
例如,下面的示例脚本将输出所有传递给它的参数:
#!/bin/bash
for arg in "$@"
do
echo "$arg"
done
我们可以通过以下命令行执行该脚本,并将两个参数传递给它:
./my_script.sh foo bar
以上命令将输出:
foo
bar
以上是仅从CMD获取文件名的一些方法,Shell/Bash有很多其它强大而方便的工具可以用来处理文件。此外,我们也可以将这些命令通过管道和重定向组合起来,实现更为复杂的操作。