Windows 如何使用bash脚本删除具有特定编号的图像?

Windows 如何使用bash脚本删除具有特定编号的图像?,windows,bash,find,Windows,Bash,Find,我的目标是编写一个脚本,将beleteall.jpg命名为“\u0” 示例:foo_0.jpg和bar_0.jpg 脚本的预期行为:删除带有“_0.jpg”的所有文件 我试图: #!/bin/bash find . -name _0.jpg -type f -delete 导致意外错误消息: FIND:参数格式不正确 如果使用查找“\u0.jpg”-name-type f-delete在文件夹中直接从命令行获取意外结果: Access denied - . File not found -

我的目标是编写一个脚本,将beleteall.jpg命名为“\u0”

示例:foo_0.jpg和bar_0.jpg

脚本的预期行为:删除带有“_0.jpg”的所有文件 我试图:

#!/bin/bash

find . -name _0.jpg -type f -delete
导致意外错误消息:
FIND:参数格式不正确

如果使用
查找“\u0.jpg”-name-type f-delete
在文件夹中直接从命令行获取意外结果:

Access denied - .
File not found - -NAME
File not found - -TYPE
File not found - F
File not found - -DELETE
更新: 运行
find”“*\u 0.jpg”“
会找到文件

预期行为删除foo_0.jpg和bar_0.jpg。 运行
find”“*\u 0.jpg”“-name f-delete
或运行
find”“*\u 0.jpg”“-exec rm“{}”
运行bash-x(调试)时出现意外结果:

更新2: 由于Windows问题(使用错误的
find
),我安装了findutils
choco安装-y findutils
添加了一个新路径并向下移动了
system32
。 结果运行:
find--help

default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:

operators (decreasing precedence; -and is implicit where no others are given):
      ( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2
      EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2

positional options (always true): -daystart -follow -regextype

normal options (always true, specified before other expressions):
      -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
      --version -xdev -ignore_readdir_race -noignore_readdir_race

tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N
      -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
      -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
      -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
      -nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN
      -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
      -used N -user NAME -xtype [bcdpfls]

actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print
      -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
      -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
      -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

Report (and track progress on fixing) bugs via the findutils bug-reporting
page at http://savannah.gnu.org/ or, if you have no web access, by sending
email to <bug-findutils@gnu.org>.
默认路径为当前目录;默认表达式为-print
表达式可能包括:运算符、选项、测试和操作:
运算符(优先级递减;-并且在没有其他运算符的情况下是隐式的):
(EXPR)!EXPR-非EXPR EXPR1-a EXPR2 EXPR1-和EXPR2
EXPR1-o EXPR2 EXPR1-或EXPR2 EXPR1,EXPR2
位置选项(始终为true):-daystart-follow-regextype
正常选项(始终为true,在其他表达式之前指定):
-深度--help-maxdepth级别-mindepth级别-mount-noleaf
--version-xdev-ignore\u readdir\u race-noignore\u readdir\u race
测试(N可以是+N或-N或N):-amin N-anewer FILE-atime N-cmin N
-cnewer文件-ctime N-empty-false-fstype-gid N-group NAME
-ilname模式-iname模式-inum N-iwholename模式-iregex模式
-链接N-lname模式-mmin N-mtime N-name模式-newer文件
-nouser-nogroup-path模式-perm[+-]模式-regex模式
-全名模式-大小N[bcwkMG]-真-类型[bcdpflsD]-uid N
-已使用N-用户名-xtype[bcdpfls]
操作:-删除-print0-printf格式-fprintf文件格式-print
-fprint0文件-fprint文件-ls-fls文件-prune-quit
-exec命令-exec命令{}+-ok命令;
-execdir命令-execdir命令{}+-okdir命令;
通过findutils bug reporting报告(并跟踪修复进度)bug
翻页http://savannah.gnu.org/ 或者,如果您没有网络访问权限,请发送
电邮至。
使用:

  • 操作系统:Windows10Pro
  • 管理者

看起来您使用的是Microsoft
FIND.EXE,而不是可爱的GNU/Linux
FIND
实用程序。赠品是错误消息的资本化及其无用性质——“参数不正确”

您可以通过运行以下命令来确认这一点:

FIND /?
如果输出看起来像什么,它就是Windows
FIND.EXE


解决方案是安装GNU
find
的一个版本,您将自己定位为
findutils
的一部分,它来自巧克力软件

您的意思是
'*0.jpg'
a10.jpg
也应该删除吗?-name“*\u 0.jpg”@choroba我是说所有
\u 0.jpg
文件。
a10.jpg
可能不会被删除您使用的是什么操作系统?我不使用Windows,但您所有的错误消息看起来都像讨厌的Windows错误消息,因此我想知道您的路径是否意味着您实际上使用了名为
FIND.EXE
的Microsoft工具,而不是可爱的Linux
FIND
。。。我想您需要运行
键入find
哪个find
echo$PATH
来查找。您可以看到
巧克力
巧克力
更多,因为像pacman这样的包管理器是为manjaro设计的。这是一种懒散的安装/升级软件的方式
findutils
不是巧克力的一部分。但是安装软件包/软件(如
find
)最简单、可读性最好的方法。
FIND /?