如何找到隐藏文件

我有一些文件,它们的名字是这样的
.abc efg.txt 
.some other name has a dot in front.txt
......
我想做这样的事情
for i in `ls -a` ; do echo $i; done;
我希望结果应该是
.abc efg.txt
.some other name has a dot in front.txt
但结果却是一团乱糟糟的...... 我怎么能得到那些隐藏文件??? 谢谢     
已邀请:
而不是使用
ls
使用shell模式匹配:
for i in .* ; do echo $i; done;
如果你想要隐藏和正常的所有文件:
for i in * .* ; do echo $i; done;
(请注意,如果你不想要那些你必须过滤掉那些,那么这也会让你
.
..
,同时请注意,如果没有(隐藏)文件,这种方法会失败,在这种情况下你还需要过滤出
*
.*
) 如果您想要所有文件并且不介意使用
bash
特定选项,您可以通过设置
dotglob
nullglob
来改进它。
dotglob
会使
*
也找到隐藏文件(但不是
.
..
),如果没有匹配的文件,
nullglob
将不会返回
*
。所以在这种情况下,您不必进行任何过滤:
shopt -s dotglob nullglob
for i in * ; do echo $i; done;
    
为了避免
.
..
你可以这样做:
find . -name ".*" -type f -maxdepth 1 -exec basename {} ";"
这将打印您想要的。如果你需要做超过
echo
的事情,那就把它作为
exec
的论据。
for fname in .*; do echo $fname; done;
也会打印
.
..
。     
要查找隐藏文件,请使用find:
find . -wholename "./.*"
要从结果中排除它们:
find . -wholename "./.*" -prune -o -print
使用空格处理整个文件的另一种方法是将它们视为行:
ls -1a | while read aFileName
do
  echo $aFileName
done
    

要回复问题请先登录注册