我有一些文件,这些文件被命名为喜欢这个如何找到隐藏文件
.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
但事实证明一堆烂摊子.. 我怎么能得到那些隐藏的文件?
感谢
我有一些文件,这些文件被命名为喜欢这个如何找到隐藏文件
.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;
如果你想要的所有文件,隐藏和正常DO:
for i in * .* ; do echo $i; done;
(注意,这将ALS GET你.
和..
,如果你不想要那些你不得不将这些过滤掉,也请注意,如果没有(隐藏)文件,在这种情况下,你会还必须过滤掉*
和.*
)
如果你想要的所有文件和不介意使用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;
也将打印.
和..
。
将maxdepth放在该位置会使find发出警告。 – Brian 2015-11-03 15:19:52
要找到隐藏的文件使用发现:
find . -wholename "./\.*"
从结果中排除:
find . -wholename "./\.*" -prune -o -print
而另一种方式来处理与空间的整个文件是把它们看作线:
ls -1a | while read aFileName
do
echo $aFileName
done
'for i in $(ls -a);做echo $ i;完成' - >'ls -a1' – twalberg 2014-05-20 12:46:56