在linux中按字母顺序查找目录中的第n个文件



有人知道我可以用来查找目录中第n个文件的bash命令吗?例:我的目录

里有4个文件aaa, aab, aac, aad.

(我的实际目录有超过4个文件)

我可以写什么命令来获得第三个文件(aac)?

另一个问题是如何找到aac的索引位置(通过终端命令)(即3)

简单地说,

lst=(*)
echo "${lst[2]}" # shows the 3rd file.

如果您想知道aac在列表中的位置,

for((i=0;i<${#lst[@]};i++)); do 
if [[ aac == "${lst[i]}" ]]; then echo "$i"; break; fi
done
2

如果你想要非零序数,echo "$((i+1))"

如果你想包含"hidden"文件,和/或排除目录等…这只是添加几行代码来减轻细节的问题。

<标题>末附录
$: i=0; declare -A plain=(); # initialize a counter and a lookup table
$: for f in * .*; do [[ -f "$f" ]] || continue; plain[$f]=$((i++)); done
$: echo ${plain[aac]}
2
$: declare -p plain
declare -A plain=([aad]="3" [aab]="1" [aac]="2" [aaa]="0" )
$: ls -lF
total 0
-rw-r--r-- 1 paul 1049089 0 Nov 17 08:45 aaa
-rw-r--r-- 1 paul 1049089 0 Nov 17 08:45 aab
-rw-r--r-- 1 paul 1049089 0 Nov 17 08:45 aac
-rw-r--r-- 1 paul 1049089 0 Nov 17 08:45 aad
drwxr-xr-x 1 paul 1049089 0 Nov 17 08:46 bar/

*抓取所有可见的;.*拾取"隐藏";文件,如果你需要的话。
-f是检查"plain"的一个例子。
以filename为键的关联数组(查找表)中自增计数器的赋值可以让您快速询问"文件某某是哪个索引?">

你可以用头和尾

示例:查找/etc目录下的第100个文件

ls/etc |头-n 100 |尾-n 1

最新更新