我试图删除文件夹内的所有文件夹,除了2 3使用rm。但是,命令不工作,下面的错误
尝试使用转义符,但无法删除文件夹。
有什么办法吗?编辑1
在括号后使用双引号是无效的编辑2使用shopt也不起作用
bfrts1fy1#
https://unix.stackexchange.com/questions/153862/remove-all-files-directories-except-for-one-file
shopt -s extglob; cd Test; rm -rfi !("atest3"|"atest2")
以下命令将强制(f)、递归(r)和交互(i)删除(rm)所有文件或文件夹,但文件或文件夹字符串('arg1')的(! bang operator**)除外|'arg2'|...)列为管道(|* *)参数。如果嵌套的文件和文件夹作为参数传递,但父文件和文件夹不是,则该文件或文件夹将被删除:
rm -rfi !('atest2'|'atest3')
Example of using rm with -rf flags and bang operator to prevent passed string arguments being deleted我将下面的命令作为我之前回答的示例。此命令将创建多个文件夹:
mkdir {test1,atest2,atest3,atest4}
此命令将删除以下文件夹:
rm -rfi {test1,atest2,atest3,atest4}
Example of mkdir with args and rm -rfi with args shell command
1条答案
按热度按时间bfrts1fy1#
https://unix.stackexchange.com/questions/153862/remove-all-files-directories-except-for-one-file
以下命令将强制(f)、递归(r)和交互(i)删除(rm)所有文件或文件夹,但文件或文件夹字符串('arg1')的(! bang operator**)除外|'arg2'|...)列为管道(|* *)参数。
如果嵌套的文件和文件夹作为参数传递,但父文件和文件夹不是,则该文件或文件夹将被删除:
Example of using rm with -rf flags and bang operator to prevent passed string arguments being deleted
我将下面的命令作为我之前回答的示例。
此命令将创建多个文件夹:
此命令将删除以下文件夹:
Example of mkdir with args and rm -rfi with args shell command