如何使用LS
问题描述:
我尝试使用ls -l命令来获取可执行文件的名称得到可执行文件的名字在bash。 然后我试图让LS的线-l具有用grep -w X,但结果是不正确的一个X:一些可执行文件丢失(在.SH)。如何使用LS
我只需要可执行文件不是路径的名字,但我不知道如何...
[email protected]:~/Bureau$ ls -l
total 52
-rwxrwxrwx 1 user user 64 oct. 6 21:07 a.sh
-rw-rw-r-- 1 user user 11 sept. 29 21:51 e.txt
-rwxrwxrwx 1 user user 140 sept. 29 23:42 hi.sh
drwxrwxr-x 8 user user 4096 juil. 30 20:47 nerdtree-master
-rw-rw-r-- 1 user user 492 oct. 6 21:07 okk.txt
-rw-rw-r-- 1 user user 1543 oct. 6 21:07 ok.txt
-rw-rw-r-- 1 user user 119 sept. 29 23:27 oo.txt
-rwxrwxr-x 1 user user 8672 sept. 29 21:20 prog
-rw-rw-rw- 1 user user 405 sept. 29 21:23 prog.c
-rw-rw-r-- 1 user user 0 sept. 29 21:58 rev
drwxrwxr-x 3 user user 4096 sept. 29 20:51 sublime
[email protected]:~/Bureau$ ls -l | grep -w x
drwxrwxr-x 8 user user 4096 juil. 30 20:47 nerdtree-master
-rwxrwxr-x 1 user user 8672 sept. 29 21:20 prog
drwxrwxr-x 3 user user 4096 sept. 29 20:51 sublime
答
使用发现来代替:
find -executable
find -maxdepth 1 -type f -executable
find -maxdepth 1 -type f -executable -ls
+0
注意'-maxdepth'和'-executable'是非标准扩展(使用GNU'find',但不由POSIX指定)。另请注意,'-executable'可能与'-perm/a + x'有所不同...... –
答
可以使用一个for
循环与水珠的扩展,用于发现和处理文件名。注意:
#!/bin/sh
for i in *
do # Only print discoveries that are executable files
[ -f "$i" -a -x "$i" ] && printf "%s\n" "$i"
done
+0
非常感谢! – Lown
使用'ls'强制性? [不解析'ls'(http://mywiki.wooledge.org/ParsingLs) –
没有,但我不知道另一种方式 – Lown