如何使用 UNIX 获取文件名?
我需要从目录中获取要在 UNIX 系统上处理的文件的文件名。目录中只有一个文件,并且其名称会动态更改(通过未命名的外部方法)。
请告诉我如何做到这一点。
I need to get a file name from a directory for the file to be processed on my UNIX system. There will be only one file in the directory and its name changes dynamically (by an un-named outside methodology).
Please let me know how this can be done.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果只有一个文件名不以
.
开头,则:这将捕获
ls
的输出。由于“一个文件”的限制,即使名称包含换行符、空格、制表符或其他内容,它也是安全的。对于多个文件,解析 ls 的输出是有问题的。如果您想要路径名,而不仅仅是文件名,您可以使用:
同样,这只是安全的,因为“一个文件”的限制。无法使用它来区分“目录中有一个文件,其名称为
*
”和错误情况“目录中根本没有文件”。对于ls
,如果字符串为空,则表示没有文件。如果文件名可能以
.
开头,那么情况会变得更加困难;您可能会使用:再说一遍,这只是因为“一个文件”的限制而安全。如果可能有多个文件,则需要使用其他技术。
If there's only one file name that doesn't begin with a
.
, then:This captures the output of
ls
. Because of the 'one file' limitation, it is safe even if the name contains newlines, spaces, tabs, or whatever. With multiple files, parsing the output ofls
is problematic.If you want the pathname, rather than just the filename, you can use:
Again, this is only safe because of the 'one file' limitation. It is not possible to use this to distinguish between 'there is one file in the directory and its name is
*
' and the error case 'there are no files in the directory at all'. Withls
, if the string is empty, there is no file.If the file name might start with
.
, then life is a lot harder; you probably use:Once more, this is safe only because of the 'one file' limit. If there might be multiple files, you need to use other techniques altogether.