0
我編寫了下面這段代碼來打印輸出中目錄的文件名。該目錄是dir1
並且其文件名是L1, L2, L3, ..,L512
如何在shell中輸出文件名?
#!/bin/bash
TOP=`pwd`
for file in "$TOP/dir1"/*; do
echo "$file"
done
exit
但是,而不是印刷只是文件名(L1,L2,..),它輸出對應於每個文件的全路徑。我怎麼能改變它只接收輸出的文件名?
'的文件 「$ PWD/DIR1 /」 *'會比使用'TOP'更有效。一般來說,捕獲'pwd'的輸出比使用'$ PWD'更加昂貴; 'pwd'是內建的,就像'$ PWD'一樣,但是執行命令替換需要'fork()'調用的開銷。對於這個問題,'top = $ PWD'也可以提高效率。 (按照慣例,全部大寫的名字保留用於環境變量和內置函數;在這種情況下,'TOP'既不是)。 – 2015-01-27 00:02:46
@CharlesDuffy:我想知道爲什麼用你的答案的文件名不排序輸出? L1 L10 L100 L101 L102 L103 L104 L105 L106 L107 L108 L109 L11 L110 L111 等 – KianStar 2015-01-27 00:37:38
他們是* *排序:因爲他們出現了。這是您的語言環境的排序順序(如果您的語言環境設置爲「C」,則爲ASCII排序),而不是數字排序順序。那裏沒有具體的答案。無論如何,您都會從globs獲取語言環境排序順序。 – 2015-01-27 01:21:39