例如,我想从Books目录打开一本特定的书。
为了找到它,我想在理想情况下使用命令添加下一个管道:ls | grep -i 'book_i_want':ls | grep -i 'some_book' | gnome-open,但这不起作用。
正确的命令是什么?
发布于 2015-03-03 09:10:02
要回答最初的问题,如果您想以STDIN作为参数来启动什么东西,您可以通过xargs进行测试。
ls | ... | xargs gnome-open或者你可以直接把输出当作一个参数来处理。这在非常长的目录中不太有用,因为您可能会达到参数限制。几乎可以肯定,xargs更快。
gnome-open $(ls | ...)但是您不应该解析输出oflsin命令,这两个都是垃圾。
您可以将所有搜索和筛选转到一个命令中:
find -iname '*book_i_want*' -exec gnome-open {} +请注意,默认情况下,这将递归到子目录中(与ls默认值不同),所以要么说明这个问题,要么将-maxdepth 1添加到行中。
发布于 2015-03-03 12:25:31
如果这样做有效的话:
ls | grep -i 'book_i_want' 那么,这个也会
gnome-open *book_i_want*为了使它不区分大小写:
shopt -s nocaseglob
gnome-open *book_i_want*事实上,上述这两种方法都比使用ls更好,因为它们可以处理任何文件名,包括带有空格和奇怪字符的文件名,而ls却不能这样做。
https://askubuntu.com/questions/592136
复制相似问题