Abs*_*cDo 7 bash shell-script rm files
我在工作目录中有一系列 Markdown 文件:
$ ls *.md
csv_reader.md egrep.md find.md found_pdfs.md osPathSep_help.md readme.md smtplib_help.md today.md
Run Code Online (Sandbox Code Playgroud)
我想删除它们,除了“today.md”
#!/usr/local/bin/bash
for i in ./*.md ; do
if [[ $i != "today.md" ]]; then
echo $i
fi
done
Run Code Online (Sandbox Code Playgroud)
运行它并得到
$ bash bash/remove_files.sh
./csv_reader.md
./egrep.md
./find.md
./found_pdfs.md
./osPathSep_help.md
./readme.md
./smtplib_help.md
./today.md
Run Code Online (Sandbox Code Playgroud)
尽管如此,结构化命令在命令行中并不方便,我怎么能用较短的命令完成这样的任务
xen*_*oid 19
使用否定匹配(需要shopt -s extglob
,但可能已经设置):
rm !(today).md
Run Code Online (Sandbox Code Playgroud)
(您可以先使用ls
而不是rm
检查结果)。
强大的力量extglob
,你也可以做到
rm !(yesterday|today).md
Run Code Online (Sandbox Code Playgroud)
如果你想节省两个文件。