如何在unix的“find”中去掉开头的“./”?

j8yoct9x  于 2022-12-18  发布在  Unix
关注(0)|答案(8)|浏览(406)
find . -type f -print

打印输出

./file1
./file2
./file3

有没有办法打印出来

file1
file2
file3


8iwquhpp

8iwquhpp1#

只查找当前目录下的常规文件,打印不带“./“前缀的文件:

find -type f -printf '%P\n'

来自man find,-printf的描述:
%磷 文件名以及发现该文件已被删除时所使用的命令行参数的名称。

dsf9zpds

dsf9zpds2#

使用sed

find . | sed "s|^\./||"
flvlnr44

flvlnr443#

如果它们只在当前目录中
find * -type f -print
这就是你想要的吗?

bbuxkriu

bbuxkriu4#

它可以更短

find * -type f
xu3bshqb

xu3bshqb5#

剥离./的另一种方法是使用cut,如下所示:

find -type f | cut -c3-

更多说明请参见here

k2fxgqgv

k2fxgqgv6#

由于-printf选项在OSX find上不可用,这里有一个在OSX find上工作的命令,以防万一,如果有人不想使用brew等安装gnu find

find . -type f -execdir printf '%s\n' {} +
wdebmtf2

wdebmtf27#

剥离的另一种方法。/

find * -type d -maxdepth 0
goqiplq2

goqiplq28#

对于当前目录中的文件:

find . -maxdepth 1 -type f | xargs basename -a

-maxdepth 1 -> basically this means don't look in subdirectories, just current dir
-type f     -> find only regular files (including hidden ones)
basename    -> strip everything in front of actual file name (remove directory part)
-a          -> 'basename' tool with '-a' option will accept more than one file (batch mode)

相关问题