显示文件并增加它们+1

显示文件并增加它们+1

我正在创建一个列出目录中所有 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

相关内容