find: missing argument to '-exec'

это мой первый пост, так как я совершенно новичок в мире программирования. В основном я беру класс UNIX, и у меня есть задание, в котором меня просят проверить размер обычных файлов в моем домашнем каталоге на предмет размеров файлов, превышающих или равных 1 КБ, а затем выполнить их резервное копирование в сжатый файл. Мне нужно использовать расширение .bak для сжатого файла, а затем вычистить его. У меня пока есть следующее:

find . -maxdepth 1 -type f -size +1k -exec gzip -k -S.bak'{}'\;-exec cp'lab4.bak'/IFT383ss16/Labs/ \;   
find: paths must precede expression  
Usage: find [-H] [-L] [-P] [path...] [expression]

Пытаюсь узнать, могу ли я получить здесь небольшую помощь, может быть, какие-нибудь предложения?

0
15.06.2016, 06:19
1 ответ

Мне кажется, что вы скупо относитесь к пробелам.

Вам нужен пробел перед {} , а также до и после \; и после cp и 'lab4.bak '. Вам также не нужны одинарные кавычки вокруг {} .

Второй -exec ... , вероятно, должен быть -exec cp {} .bak / IFT383ss16 / Labs / \;

Попробуйте следующее:

find . -maxdepth 1 -type f -size +1k \
    -exec gzip -k -S.bak {} \; \
    -exec cp {}.bak /IFT383ss16/Labs/ \;   

Это все может быть на одна линия. Я использовал \ в конце первых двух строк, чтобы сделать его более читаемым (оболочка будет читать строки с \ в качестве последнего непробельного символа как продолжение на следующей строке). Это работает так же с одной строкой, если вы удалите концевые \ s и соедините строки самостоятельно.

Кстати, вы хотите скопировать файлы .bak или переместить их? Возможно, используйте mv вместо cp .

1
28.01.2020, 02:48

Теги

Похожие вопросы