O problema é que 'marcas são usadas para denotar comandos que a saída deve ser substituída em seu comando ... então seu comando é na verdade três comandos:
- "echo" (contido no primeiro conjunto de 1 marca)
- "- 1308741881 | bc" (contido no segundo conjunto de 1 marca)
- encontre. -mtime - SAÍDA DO COMANDO # 1 date +% s SAÍDA DO COMANDO # 2
O comando # 1 não produz nada, e o comando # 2 resulta no erro "Comando não encontrado", porque -1308741881 não é um comando válido, e também não produz nada.
Então, finalmente, o terceiro comando é executado, com essas substituições e é assim:
find . -mtime -date
E como "-date" não é um horário válido, ele também se queixa disso, dizendo "valor de hora ilegal"
O problema subjacente é que você está tentando usar marcas aninhadas, que o shell interpreta como dois comandos separados.
A melhor maneira de expressar o que você quer é isso (para bash):
find . -mtime -$(echo $(date +%s-1308741881) | bc)s
E para csh:
set now='date +%s-1308741881'; set date='echo $now | bc's; find . -mtime -$date
E possivelmente para outros shells (não testados):
NOW='date +%s-1308741881'; DATE='echo $NOW | bc'; find . -mtime -${DATE}s
P.S. Eu não acho que isso faz o que você espera ... seu comando de data está retornando um número de segundos, mas -mtime espera um número de dias como entrada. Eu estou supondo que você provavelmente vai querer ajustar o seu comando de data de acordo.