无法打印作为参数的 Glob 表达式
我正在尝试编写一个简单的 bash 脚本,它将打印作为终端输入提供的参数。 echo "${1-nothing}" 我尝试过使用 $@ 或不使用引号。如果我输入*参数,则不会打印出 *,而是打印出 bash 文件的名称。我怎样才能简单地将 * 作为参数打印出来? ...
我正在尝试编写一个简单的 bash 脚本,它将打印作为终端输入提供的参数。 echo "${1-nothing}" 我尝试过使用 $@ 或不使用引号。如果我输入*参数,则不会打印出 *,而是打印出 bash 文件的名称。我怎样才能简单地将 * 作为参数打印出来? ...
在zsh和bash您都可以: > echo {1..10} 1 2 3 4 5 6 7 8 9 10 > echo {a..z} a b c d e f g h i j k l m n o p q r s t u v w x y z > echo {1..10..2} #range 1 to 10 in steps of 2 (i.e. skipping 1) 1 3 5 7 9 但在现代bash(在 v5.x 中测试)中您可以: > echo {a..z..3} # a through z chars, but in step...
我想显示一些关于隐藏子目录的信息,但注意到一种我不理解的通配符行为。 ls .*展开到 pwd、父目录路径和所有隐藏的子目录路径,然后列出所有这些目录的内容。这样就好了。 du -s .*另一方面,似乎只会扩展到 pwd 和父目录路径,因为它只列出了这些的大小。我不明白为什么它的行为与 的行为不同ls。 使用du -s .[^.]*解决了实际问题,因为它列出了所有隐藏目录的大小。我知道这有效,但为什么不起作用du -s .*? ...
我可以做这个: $ grep 'text' foo/* foo/**/* 但问题是它扩展以列出所有文件和目录,所以我收到一堆这样的错误: grep: foo/a: Is a directory grep: foo/bar/b: Is a directory grep: foo/bar/c: Is a directory grep: foo/bar/c/d: Is a directory 我的问题是,是否存在可以用来仅匹配文件的 globstar 模式? 请注意,有些目录可能包含扩展名.,而有些文件可能没有扩展名,因此**/*.*不起作用。 此外,这个问题...
我需要使用命令获取子目录中包含的文件列表,包括以“.”开头的文件名sftp ls。例如,我在远程的目录结构是: root_folder | + folder_1 | +.ready | + folder_2 | + folder_3 +.ready +my_tar.tar 从根文件夹我可以发出以下命令ls -1 */*: folder3/my_tar.tar 如果我包含-aegls -1a */*选项,我会得到与上面相同的结果,即未列出隐藏文件。 通过使用,ls ...
举例qpdf来说: # To merge (concatenate) all the pages of a list of PDF files and save the result as a new PDF: qpdf --empty --pages <file1.pdf> <file2.pdf> <file3.pdf> -- <output.pdf> 需要将特定目录中的一组 .pdf 文件(文件名中有空格)连接起来: # Concatenate Drafts file to ../concatDrafts...
这是我的脚本(简化): cd /etc; for f in *.{conf,cfg,foo}; do echo $f; done 它输出类似 adduser.conf apg.conf ... vdpau_wrapper.cfg *.foo (仅举例) 就目前而言,我使用类似 for f in *.{conf,cfg,foo}; do test -f $f && echo $f; done 因为*.foo(没有与掩码匹配的文件) *.ext有没有更方便的解决方案(例如,如果没有找到这样的文件就不列出)? 换句话说:*....
ls Session 9 - Terminal Value.mp4 现在我想删除它。 shopt -s dotglob rm -rf .*.mp4 它不起作用,文件Session 9 - Terminal Value.mp4仍然在那里。.可能无法匹配空格。 ...
我正在尝试调试为什么脚本没有在我的服务器上执行我想要的操作。在测试时,我发现了一个奇怪的现象。我有一个目录,大致如下所示: bash-4.3# ls -l ./ 共 0 -rw-r--r-- 1 root root 0 8月6日 05:46 db.local.php -rw-r--r-- 1 root root 0 8月 6 05:46 global.php -rw-r--r-- 1 root root 0 8月6日 05:46 local.php -rw-r--r-- 1 root root 0 8月 6 05:46 someOther.global.p...
是否可以向 shell glob 扩展添加“前缀”?我的用例如下,我有一个程序需要重复选项标志来传递多个文件作为输入: $ ls foo.txt bar.txt baz.txt $ ./some-script.sh -a foo.txt -a bar.txt -a baz.txt 我希望能够使用某种扩展来添加'-a '到 的每个项目中*txt。这可能吗?用 zsh?bash? ...
我想删除给定目录中除符合特定模式的目录之外的所有子目录和文件: example_dir/model-*/gen-*/share/** 常规设置:我生成了多个模型(> 100),每个模型都有 >=1 代。这些模型(例如example_dir/model-0/gen-0/)内有多个目录和子目录。 期望结果:我想删除除匹配项之外的所有目录和文件: example_dir/model-*/gen-*/share/ 在每个单独的模型/代中,它都会是这样的吗?: rm -rf !(share) ...
提前感谢任何帮助! 我已经设置了一个 inotifywait 脚本来监控某些应用程序的配置更改。我正在创建所有要监视的目录;但是,如果有新应用程序部署,则它不会被 glob 拾取。 inotifywait -m -e close_write,delete /apps/*/etc | while read eventdir eventlist eventfile do # do work done 问题是,当有新应用程序部署到 时/apps,监视的 globinotifywait不包括/apps/new_app/etc/。 有没有办法动态更新此...
Linux 和类 Unix shellbash允许使用通配符来近似文件名,使文件搜索更容易。我知道通配符通配符 (*)。bash我还可以使用哪些其他通配符grep? ...
在 zsh 中,我在一个变量中有一个 glob 模式,我想定义另一个变量来根据该模式执行文件名生成。有没有办法在不生成子 shell 的情况下做到这一点? 以下操作无效: x=foo* y=$~x 显然我可以做到 x=foo* y=$(echo $~x) 并开始执行常规完成行为。但这个问题的重点是避免产生子shell,这似乎是不必要的。 过去几天,这个问题在 stackoverflow.com 上没有得到任何回复,所以我想我可以尝试在这里提问。 ...
我有许多 epub 文件,想将它们整理到文件夹中。我的所有文件都遵循相同的模式“作者 - 姓名(年份).epub”。我想归档的是按作者计数文件,如果书籍数量超过 2 本(例如),则将它们移动到以作者命名的文件夹中。 例如,对于以下文件: Willis, Connie - [Oxford Time Travel #1] - Doomsday Book (1992).epub Willis, Connie - [Oxford Time Travel #2] - To Say Nothing of the Dog (1997).epub Willis, Con...