如何去除前导“./”在unix中“查找”?

发布于 2024-08-28 05:40:51 字数 184 浏览 11 评论 0原文

find . -type f -print

打印出来

./file1
./file2
./file3

有什么办法让它打印出来吗

file1
file2
file3

find . -type f -print

prints out

./file1
./file2
./file3

Any way to make it print

file1
file2
file3

?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

少女七分熟 2024-09-04 05:40:51

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

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

来自 man find,-printf 格式的说明:

%P  文件的名称以及在其下发现该文件的命令行参数的名称已被删除。

Find only regular files under current directory, and print them without "./" prefix:

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

From man find, description of -printf format:

%P     File's name with the name of the command line argument under which it was found removed.

两个我 2024-09-04 05:40:51

使用sed

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

Use sed

find . | sed "s|^\./||"
别低头,皇冠会掉 2024-09-04 05:40:51

如果它们仅在当前目录中

find * -type f -print

这就是您想要的吗?

If they're only in the current directory

find * -type f -print

Is that what you want?

零崎曲识 2024-09-04 05:40:51

它可以更短

find * -type f

it can be shorter

find * -type f
吾性傲以野 2024-09-04 05:40:51

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

find -type f | cut -c3-

可以找到进一步的解释 这里

Another way of stripping the ./ is by using cut like:

find -type f | cut -c3-

Further explanation can be found here

陌伤浅笑 2024-09-04 05:40:51

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

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

Since -printf option is not available on OSX find here is one command that works on OSX find, just in case if someone doesn't want to install gnu find using brew etc:

find . -type f -execdir printf '%s\n' {} + 
人事已非 2024-09-04 05:40:51

对于当前目录中的文件:

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)

For files in current directory:

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)
追风人 2024-09-04 05:40:51

另一种剥离 ./ 的方法

find * -type d -maxdepth 0

Another way of stripping the ./

find * -type d -maxdepth 0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文