Разрешение отклонено при использовании -exec {} ls с командой find

При выполнении следующей команды он дает мне permission denied сообщение для всех файлов.

 find /data/code/ -name "*.jar" -exec {} ls \; find: `/data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar': Permission denied 

Но если я это сделаю

 ls /data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar 

Он печатает, дает правильный вывод без permission denied .

 /data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar 

Что я делаю не так?

ps: Мне нужно перечислить и удалить все файлы jar в /data/code

  • Как я могу перечислить LS_COLORS в цвете?
  • Как я могу сначала показать «ls» dotfiles, оставаясь без учета регистра?
  • Как скопировать последний файл из одного каталога в другой?
  • Как я могу перечислить подкаталоги рекурсивно?
  • Смутно о поведении звездочки в команде ls
  • Добавление работ без >> при перенаправлении стандартного вывода и ошибки
  • dircolors: правила для _ext (а не .ext)
  • Печать несуществующих файлов с входного канала
  • One Solution collect form web for “Разрешение отклонено при использовании -exec {} ls с командой find”

    Выполняя:

     find /data/code/ -name "*.jar" -exec {} ls \; 

    вы пытаетесь выполнить обнаруженный файл (например, /data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar ) с ls в качестве аргумента для него, что приводит к разрешение отклонено.

    Просто переключите заказ:

     find /data/code/ -name "*.jar" -exec ls {} \; 

    У GNU find есть опция -ls , поэтому в GNU find вы можете просто сделать:

     find /data/code/ -name "*.jar" -ls 
    Linux и Unix - лучшая ОС в мире.