爲什麼打印兩次文件?bash在使用表達式時找到打印文件兩次
find . *.{h,cc} -maxdepth 1 -type f
./file7.h
./file8.h
./file9.cc
file7.h
file8.h
file9.cc
這是正確的嗎?我如何指定文件模式?
爲什麼打印兩次文件?bash在使用表達式時找到打印文件兩次
find . *.{h,cc} -maxdepth 1 -type f
./file7.h
./file8.h
./file9.cc
file7.h
file8.h
file9.cc
這是正確的嗎?我如何指定文件模式?
它有兩次是因爲它首先在.
下找到它,然後在find
的實際文件名下找到它作爲搜索的地方。也許你打算在逃脫通配符的同時使用-name
。
find *.{h,cpp} -maxdepth 1 -type f
這也許幫助。
find . -maxdepth 1 \(-name \*.h -o -name \*.cc \) -type f
如果你只是尋找當前目錄下的文件,爲什麼不直接使用:
$ shopt -s expglob
$ ls *.*(h|cc) */*.*(h|cc)
否則,你必須做一些事情liek此:
$ find . -maxdepth 1 -type f \(-name "*.h" -o -name "*.cc" \)
使用圓括號將首先執行,然後將其與-type f和-maxdepth組合。
我該如何改變它以包含-name? – Mark