如何使用linux命令来设置文件集

cup*_*kob 3 linux terminal command-line

我正在寻找一个解决方案,使用终端和linux下的命令"convert"转换一组文件.我可以为每个文件使用"convert":

convert -quality 85 file.jpg file.jpg
Run Code Online (Sandbox Code Playgroud)

但我正在寻找类似的东西:

for each jpg do
  convert -quality 85 $file $file
end
Run Code Online (Sandbox Code Playgroud)

有人能告诉我,我可以使用哪个命令?

Bri*_*new 11

for i in *.jpg; do
   convert ... $i $i
done
Run Code Online (Sandbox Code Playgroud)

应该这样做.这适用于sh/bash/zsh等.它假定您的所有*.jpg文件都在当前目录中.否则,用适当的查找调用替换*.jpg,例如

for i in `find . -name "*.jpg" -print`; do
Run Code Online (Sandbox Code Playgroud)

注意反引号.这些表明应该执行封闭的命令,并将结果返回给调用结构(在本例中为for循环)

如果您使用zsh,那么您可以这样做

for i in **/*.jpg; do
Run Code Online (Sandbox Code Playgroud)

搜索通配符中的子目录,并使用高级zsh通配符语法进一步限定这些子目录.但是,我不确定bash在这个区域提供什么设施.

  • 不要忘记xargs.不一定像for循环一样强大,但通常很方便知道它可用:find -name'*.jpg'| xargs -l -i convert -quality 85 {} {} (3认同)
  • 或者即使没有xargs,你也可以通过:find.-name"*.jpg"-exec convert -quality 85 {} \: (2认同)

Rob*_*let 5

convert您可以使用其姐妹命令mogrify来编辑文件,而不是通过覆盖自身来编写每个文件.此外,这两个命令都有内置的globbing,因此它们可以在一次调用中修改所有图像,这比每个图像运行一次程序要快.有关更多信息,请参见ImageMagick命令行处理.

所以这将做:

mogrify '*.jpg' -quality 85
Run Code Online (Sandbox Code Playgroud)