Bir dizinde (yinelemeli olarak) bir grup dosyayı tüpe aktarmak için jsonlint kullanıyorum.xargs komut uzunluğu sınırları
find ./config/pages -name '*.json' -print0 | xargs -0I % sh -c 'echo Linting: %; jsonlint -V ./config/schema.json -q %;'
Çoğu dosyaları ama aşağıdaki hatayı alıyorum bazı dosyalar için çalışır:
Linting: ./LONG_FILE_NAME.json
fs.js:500
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT, no such file or directory '%'
Uzun dosya adları için başarısız gibi görünüyor ben aşağıdaki komutu yazdım. Bunu düzeltmenin bir yolu var mı? Teşekkürler.
Düzeltme 1: Sorun bulundu.
-I replstr
Execute utility for each input line, replacing one or more occurrences of replstr in up to replacements (or 5 if no -R flag is specified) arguments to utility with the entire line of input. The resulting arguments, after replacement is done, will not be allowed to grow beyond 255 bytes; this is implemented by concatenating as much of the argument containing replstr as possible, to the con-structed arguments to utility, up to 255 bytes. The 255 byte limit does not apply to arguments to utility which do not contain replstr, and furthermore, no replacement will be done on utility itself. Implies -x.
Düzenleme 2: Kısmi çözüm. Daha önce olduğundan daha uzun dosya adlarını destekler ancak yine de gerektiği kadar uzun değil.
find ./config/pages -name '*.json' -print0 | xargs -0I % sh -c 'file=%; echo Linting: $file; jsonlint -V ./config/schema.json -q $file;'
görünüyor, o Xargs değil Xargs –
ben de sorunu değil sadece harika bir çözüm bulduk. Düzenlemeleri görün. –
'xngs' komutunu bir json dosyasını bir defada' -n 1' ileterek işleyebilirsiniz. Ya da belki birkaç dosya kırılma noktasından daha az bir zamanda geçerek -n 20'yi geçerek örneğin .. – alvits