我明白,如果你输入ls *它实际上是扩展到ls a b c当前直接有文件的时候a,b和c.
我想知道在我输入之前是否有办法扩展它。类似于Ctrl+X 的工作方式,或Tab Complete 的工作方式。
所以为了让自己清楚
$ ls *
<press magic key>
$ ls a b c
Run Code Online (Sandbox Code Playgroud)
以类似的方式:
$ ls ~/
<press tab>
$ ls /home/username
Run Code Online (Sandbox Code Playgroud)
我以为我以前看过这个,但我可能弄错了。
我想列出所有文件,但那些以 owp 结尾的文件:因此我尝试过:
ls -l *.(^owp)
zsh: unknown sort specifier
ls -l *(^owp)
zsh: unknown sort specifier
ls -l *[^o][^w][^p] # does not work either, missing some files
Run Code Online (Sandbox Code Playgroud)
没有一个工作。我如何以正确的方式做到这一点?我的 .zshrc 已经“设置了extendedglob”。
会rm -rf *删除当前目录中的所有文件/文件夹吗?我想确保通配符*不会在上层目录中向上移动并擦除我的所有文件系统。:D
我记得chmod 777 .* -R对chmod隐藏文件做的,它chmod编辑了我所有的文件系统。显然,我使用的是 root 帐户。
如何删除所有 .swp 文件?我试过了,rm *.swp但我得到了rm: *.swp: No such file or directory
rwxr-xr-x 16 teacher staff 544 Jan 17 13:19 .
drwxr-xr-x 19 teacher staff 646 Jan 16 12:48 ..
-rw-r--r-- 1 teacher staff 20480 Jan 17 09:48 .6-1-period-2.txt.swp
-rw-r--r-- 1 teacher staff 16384 Jan 17 09:05 .6-2-period-6.txt.swp
-rw-r--r--@ 1 teacher staff 6148 Jan 15 16:16 .DS_Store
-rw-r--r-- 1 teacher staff 12288 Jan 16 19:46 .grade8.txt.swp
-rw-r--r-- 1 teacher staff 11070 Jan 17 09:48 6-1-period-2.txt
Run Code Online (Sandbox Code Playgroud) 我在一个文件夹中有一堆文件:
电子表格700.xls 电子表格800.xls 电子表格850.xls 电子表格1005.xls 电子表格2400.xls
如何使用文件通配来选择数字以 700 或更高但小于 1000 结尾的文件并将它们放入新文件夹中?
我试过了:
cp 电子表格*.xls 但通配符选择全部。先谢谢了。
当*.txt目录中实际存在文件时,以下 bash 代码段效果很好。
for txt in *.txt
do
echo "loading data from $txt"
done
Run Code Online (Sandbox Code Playgroud)
如果没有,文字*.txt会作为 $txt 进入循环(不好)。
如何更改此代码以便在没有*.txt文件时do ... done跳过该块?
在“标准 BASH”上,双引号内是否有通配符?例如:
$ touch abc
$ ls "*abc*"
Run Code Online (Sandbox Code Playgroud)
会,还是不会在 bash 上工作?
有人告诉我 Ubuntu 附带了一个不符合 POSIX 或 BASH 的 bash 变体。真的吗?
好的,这个问题针对 Unix/Linux shell!
我想要一个 shell globbing(又名通配符)模式或 GLOBIGNORE 列表,以非递归方式(maxdepth == 1)匹配当前目录中的所有文件,包括隐藏文件。到目前为止,我必须执行两个命令或使用较长的解决方法(见下文):
ls -lad *vim*
ls -lad .*vim*
Run Code Online (Sandbox Code Playgroud)
在使用 zsh 时。如果我记得的话,dash 和 bash 是一样的,对吧?
简短的解决方法:
ls -la | grep vim
find . -maxdepth 1 | grep vim
Run Code Online (Sandbox Code Playgroud)
我想了一百次:难道没有一个简单的通配解决方案吗?为什么不*匹配点字符?
我有一个与此类似但不同的问题:如果可能,我希望 bash在自动完成中使用glob 扩展。例如,我想
$ ls *2.<TAB>
Run Code Online (Sandbox Code Playgroud)
给我:
$ ls mydoc2.
mydoc2.pdf mydoc2.tex mydoc2.txt
Run Code Online (Sandbox Code Playgroud)
我经常遇到这种情况。在上面的例子中,我使用了短前缀“mydoc”,但实际的前缀通常很长。这可能吗?
我知道*2.*会扩展为C-x*,但这是一个不同的函数,在这种情况下不适合(因为我只需要从与 glob 匹配的文件列表中选择一个文件)。