Я не вижу смысла в конвейере. zless
— это интерактивная программа, и вывод ls
должен просматриваться , а не анализироваться.
Вместо:
... sh -c 'zgrep PATTERN /logs/my-log.*'
или, если файлов слишком много,
... sh -c 'for pathname in /logs/my-log.*; do zgrep PATTERN "$pathname"; done'
или, более эффективно,
... sh -c 'find /logs/ -maxdepth 1 -type f -name "my-log.*" -exec zgrep PATTERN {} +'
то, что вы хотите сделать
for FILENAME in /data/output/*.txt;
do
mv "$FILENAME" "/data/archive/archive_$(basename "$FILENAME")" ;
done
это, конечно, может быть однорядным.
где
basename "$FILENAME"
извлечь последнюю часть имени файла basename "$FILENAME".txt
будет делать то же самое, полосая .txt
часть. и при размещении здесь вы всегда должны цитировать имя файла.