2015-08-14 2 views
0

В: Я работаю со скриптом на платформе unix, и мне нужно выяснить все файлы в каталоге, который появился примерно через 8 часов раньше.Найти файлы со специальным символом в имени файла в unix

я использую следующую команду для извлечения файлов, как указано выше условие:

find . name "*.dat" -mmin -480 

Но есть несколько файлов, которые имеют особый характер (двойной знак вопроса) ?? "в имени файла себя и используя выше команды, файл с ?? в его названии, получил расщепляется на две части в две строки

для например:.

file name : aabb??cc.dat 

после того, как выше команды запуска, это приводит к следующим образом:

$./aabb 

$cc.dat 

($ здесь Unix командной строки) Может кто-то предложить поправку в команде выше или правильный подход для обработки этого исключения.

+3

find не собирается разделять имя файла. покажите остальную часть своего скрипта. –

+0

Нет такого понятия, как «специальный символ». Есть только символы. Многие из тех педерастов. – arkascha

+0

@MarcB моя цель здесь не в том, чтобы разбить файл. Я хочу найти файл в каталоге с полным именем файла, но этот файл (aabb? Cc.dat) разбивается на два имени, что для меня проблема. – avisingh05

ответ

0

Эта команда покажет вам find рассматривает эти файлы так же, как другие:

find . -name "*.dat" -mmin -480 -exec \ 
    ksh -c 'c=1 
      for file do 
       printf "file #%d is \"%s\"\n" $c "$file" 
       c=$((c+1)) 
      done ' sh {} + 

Если find показывает некоторые имена файлов разделены на две строки, то это только потому, что их имена имеют встроенную новую строку. Это странно, но они все еще являются действительными именами файлов.

+0

Вам нужна точка с запятой перед '' '' 'для файла делать printf', как минимум. Скрипт не читается, потому что он растягивается на километры. –

+0

@JonathanLeffler. Я понимаю, что нет такой точки с запятой в соответствии с грамматикой цикла POSIX 'for'. Новые строки вставлены для удобства чтения. – jlliagre

+1

Интересно.Из-за отсутствия 'in' и списка аргументов (например, no' для файла в «$ @»; ') точка с запятой, похоже, не нужна, хотя и не наносит никакого вреда. Я сижу, поправил. –

Смежные вопросы