将文件传输到 gnome-open 命令

将文件传输到 gnome-open 命令

例如,我想从Books目录中打开一本特定的书。

为了找到它我ls | grep -i 'book_i_want' 理想情况下想用命令添加下一个管道,如下所示: ls | grep -i 'some_book' | gnome-open 但那不起作用。

正确的命令是什么?

答案1

要回答最初的问题,xargs如果您想使用 STDIN 作为参数启动某些东西,则可以通过管道传输。

ls | ... | xargs gnome-open

或者你可以直接将输出视为参数。这在非常长目录可能会达到参数限制。xargs几乎肯定会更快。

gnome-open $(ls | ...)

ls你不应该解析命令的输出;这两者都是垃圾。
您可以将所有搜索和过滤合并到一个命令中:

find -iname '*book_i_want*' -exec gnome-open {} +

请注意,这将默认递归到子目录(与ls默认值不同),因此请考虑到这一点或添加-maxdepth 1到行中。

答案2

如果有效:

ls | grep -i 'book_i_want' 

那么,这也将

gnome-open *book_i_want*

要使其不区分大小写:

shopt -s nocaseglob
gnome-open *book_i_want*

事实上,上述两种方法都比使用效果更好,ls因为它们可以处理任何文件名,包括那些带有空格和奇怪字符的文件名,而这些文件名则ls不能。

相关内容