это мой первый пост, так как я совершенно новичок в мире программирования. В основном я беру класс 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]
Пытаюсь узнать, могу ли я получить здесь небольшую помощь, может быть, какие-нибудь предложения?
Мне кажется, что вы скупо относитесь к пробелам.
Вам нужен пробел перед {}
, а также до и после \;
и после 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
.