我正在创建一个列出目录中所有 nano 文件的脚本。 han 比文件添加了一个数字。 (为每个文件添加+1)。然后允许用户查看 nano 文件。
这是我到目前为止所拥有的。我想指出的是,所有文件名都以 结尾,_log
这就是为什么我希望 grep 能像这样工作。
path=~/home/folder/list
list=$(`ls $path | grep -i \*_log`)
printf '%s\n' "${list[@]}" | nl -v 1
read -p "Number of file to be displayed:" numb
sudo cat $path/${list [numb]}
答案1
如果我理解正确的话,您想要创建一个包含所有文件的数组,然后显示与用户输入的数字相对应的文件的内容。如果是这样,你就会让事情变得比必要的更加复杂。这应该足够了:
## Get the files into the array $list
list=(/home/folder/list/*_log)
## Display the file names
for i in ${!list[@]}; do
printf "%s: %s\n" $i "${list[i]}";
done
## Get the user input
read -p "Number of file to be displayed:" numb
## display the file (don't use sudo unless absolutely necessary)
cat "${list[numb]}"
请注意,这将显示包括整个路径的文件名。要仅显示名称,请将for
循环更改为:
## Display the file names
for i in ${!list[@]}; do
printf "%s: %s\n" $i "${list[i]##*/}"
done