Unix:Bash:Searching 用于特定目录
Unix: Bash:Searching for specific directories
我正在 Bash 中编写脚本,我正在尝试查找特定目录。我很接近,我只是卡住了。
我正在搜索名称中包含一到三位数字的目录。
示例:示例 1、示例 23、示例 456。
当我对这些目录进行罚款时,我想运行某个脚本。
我可以让它遍历所有个位数的目录,但是当我尝试让我的脚本执行超过一位的目录时,它不起作用。
编辑:当我说它不起作用时,它会 运行 并找到一个包含 3 位数字的目录,但它会忽略所有包含两位或一位数字的目录。
脚本:
for directory in Ex[0-9][?0-9][?0-9]/
do
./test "$directory"
echo "Directory is: " $directory
done
最简单的解决方案就是使用三个 glob。
for directory in Ex[0-9] Ex[0-9][0-9] Ex[0-9][0-9][0-9]
如果需要,您可以使用 =~
正则表达式匹配工具在循环中进行过滤。像(未经测试):
for directory in Ex[0-9]*/
do
if [[ "$directory" =~ Ex[0-9]{1,3} ]]; then
./test "$directory"
echo "Directory is: " $directory
fi
done
这应该有效:
for directory in Ex[0-9]*
do
./test "$directory"
echo "Directory is: " $directory
done
你也可以这样做:
for directory in $(find . -name "Ex[0-9]*" | grep -E "Ex[0-9]{1,3}$")
do
#My stuff
......
done
我正在 Bash 中编写脚本,我正在尝试查找特定目录。我很接近,我只是卡住了。
我正在搜索名称中包含一到三位数字的目录。
示例:示例 1、示例 23、示例 456。
当我对这些目录进行罚款时,我想运行某个脚本。
我可以让它遍历所有个位数的目录,但是当我尝试让我的脚本执行超过一位的目录时,它不起作用。
编辑:当我说它不起作用时,它会 运行 并找到一个包含 3 位数字的目录,但它会忽略所有包含两位或一位数字的目录。
脚本:
for directory in Ex[0-9][?0-9][?0-9]/
do
./test "$directory"
echo "Directory is: " $directory
done
最简单的解决方案就是使用三个 glob。
for directory in Ex[0-9] Ex[0-9][0-9] Ex[0-9][0-9][0-9]
如果需要,您可以使用 =~
正则表达式匹配工具在循环中进行过滤。像(未经测试):
for directory in Ex[0-9]*/
do
if [[ "$directory" =~ Ex[0-9]{1,3} ]]; then
./test "$directory"
echo "Directory is: " $directory
fi
done
这应该有效:
for directory in Ex[0-9]*
do
./test "$directory"
echo "Directory is: " $directory
done
你也可以这样做:
for directory in $(find . -name "Ex[0-9]*" | grep -E "Ex[0-9]{1,3}$")
do
#My stuff
......
done