一次删除所有具有特定名称但扩展名不同的文件

ecj*_*cjb 5 terminal delete macos

我有一个目录,其中包含以下文件集:

cheatsheetold.aux
cheatsheetold.log
cheatsheetold.out
cheatsheetold.pdf
cheatsheetold.synctex.gz
cheatsheetold.tex
cheatsheetnew.aux
cheatsheetnew.log
cheatsheetnew.out
cheatsheetnew.pdf
cheatsheetnew.synctex.gz
cheatsheetnew.tex
Run Code Online (Sandbox Code Playgroud)

我想要做的是删除所有 cheetsheetold.

cheatsheetold.aux
cheatsheetold.log
cheatsheetold.out
cheatsheetold.pdf
cheatsheetold.synctex.gz
cheatsheetold.tex
Run Code Online (Sandbox Code Playgroud)

不接触 cheatsheetnew

cheatsheetnew.aux
cheatsheetnew.log
cheatsheetnew.out
cheatsheetnew.pdf
cheatsheetnew.synctex.gz
cheatsheetnew.tex
Run Code Online (Sandbox Code Playgroud)

我已经看过this other question,但它没有解决问题,因为这两个文件名都有一套完整的扩展名

ctr*_*lor 5

Unix 没有文件名扩展名,微软的 Windows 也没有(不是在 Windows ME 之后。但是文件资源管理器仍然有这个概念)。您需要做的是找到所有以 ... 开头的文件(在您的情况下以cheatsheetold..

您可以使用cheatsheetold.*. 然后它将文件列表传递给rm. 您可以将它与任何命令一起使用。这不是rm一回事。

练习 echo cheatsheetold.*


fra*_*one 3

没有说明在删除文件时您希望在哪个 shell(bash、fish、zsh、csh)中使用某种通配符。

作为bash一个著名的 shell,我声明可以简单地使用这个命令:

rm -- cheatsheetold.*
Run Code Online (Sandbox Code Playgroud)

*请注意,在 as之后使用通配符--以避免 bash shell 扩展造成任何未缩进的错误

命令行env | grep 'SHELL' 可能会显示您使用的 shell。我还在更 POSIX 简化的dashshell 中测试了命令行。

我根本不使用任何其他 shell(例如 csh 和 tsh 或 Fish),因此我无法判断 globbing 在那里是如何工作的。

了解哪个 shell 正在运行的另一种方法可能是, ps -p $$其中$$应该是当前进程(shell)的 PI​​D,并且 ps 工具列出仅限于当前 shell PID 的进程。

https://help.ubuntu.com/community/ShellGlobbing