ls、xargs、zcatを組み合わせると、ファイル名のサフィックスが重複しますか?

ls、xargs、zcatを組み合わせると、ファイル名のサフィックスが重複しますか?

婦人声明:はい、スクリプトでファイルを見つけることはlsお勧めできませfindんが、変更された日付で並べ替えられません。

以下を使用すると、すべてが大丈夫lsですxargsecho

$ ls -t1 ssl-access*.gz | xargs -n 1 echo
ssl-access.log.2.gz
ssl-access.log.3.gz
ssl-access.log.4.gz
[...]

echoに変更zcat:

$ ls -t1 ssl-access*.gz | xargs -n 1 zcat
gzip: ssl-access.log.2.gz.gz: No such file or directory
gzip: ssl-access.log.3.gz.gz: No such file or directory
gzip: ssl-access.log.4.gz.gz: No such file or directory
[...]

ファイルのサフィックスが重複していますか? !ここで何が起こっているのでしょうか?


修正する:

オペレーティングシステムはDebian 5です。

zcatシェルスクリプトです/bin/zcat

#!/bin/sh
PATH=${GZIP_BINDIR-'/bin'}:$PATH
exec gzip -cd "$@"

ベストアンサー1

私のシステムでは、問題が色lsによって引き起こされたことがわかりました。私の.bash_profileには次のものがあります。

alias ls="ls --color"

結果をstatに送って見つけたところ、便利な内容が印刷されました。

$ ls local4.notice-201207* | xargs -n1 -P4 -I{} stat {}
stat: cannot stat `\033[0mlocal4.notice-20120711.gz\033[0m': No such file or directory

空のカラーコードを見てください! zcatは混乱してファイルを見つけるために.gzサフィックスを追加しようとします。問題は、lsをcolor = autoに変更することで簡単に解決できます。これにより、STDOUTが端末の代わりに別のプロセスに接続されているときにカラー出力が無効になります。

alias ls="ls --color=auto"

頑張ってください!

おすすめ記事