从管道输入打印不存在的文件

Ari*_*yan 5 linux ls grep sed files

我有很多的目录.PDF.JPG文件。

.JPG每个文件都应该有一个.PDF同名的文件。
我正在尝试使用命令来查找.PDF没有.JPG文件的文件。

我目前的命令是:

find -iname '*.jpg' -print0|sed 's/jpg$/pdf$/ig' |xargs -0 ls
Run Code Online (Sandbox Code Playgroud)

这会: No such file or directory为不存在的文件打印错误;
问题是或ls无法处理的错误。 其中任何一个都可以解决我的问题: grepsed

  • 我怎样才能ls只列出不存在的文件?
  • 如何处理/过滤lswith sed/ 的错误grep
  • 文件存在性检查的任何其他方式(不创建 bash 脚本文件)?

小智 2

我认为你应该使用循环

IFR=$'\0' # because you use -print0 on your find
for jpg_file in `find -iname '*.jpg' -print0`
do
  pdf_file=`echo "$jpg_file" | sed 's/jpg$/pdf/i'`
  if [ -e "$pdf_file" ]; then
    echo "$pdf_file exist"
  else
    echo "$pdf_file missing"
  fi
done
Run Code Online (Sandbox Code Playgroud)