これを実装するための私のこれまでのところそれほど悪くないバージョンは次のとおりです。
function bashFileConvert($file)
{
return preg_replace('/([^\/\s]+\s+[^\/]+)(\/|$)/','"${1}"${2}',$file);
}
ファイル名にスペースがある場合、主に問題を処理します。
$flie = '/usr/local/my test file.txt'
while は Bash では認識されません。
だから私はに変換する必要があります
$file = '/usr/local/"my test file.txt"'
次のようなものを呼び出す前に:
exec('ls ' . $file);
しかし、引用符や「&」の問題など、他にも多くのコーナーケースがあります。
それで、この仕事をするための準備が整ったバージョンはありますか?
==================================
今私は escapeshellarg() を試しましたが、ここでは少し奇妙です:
$file = '/usr/local/apache2/resumes_txt/5/San Francisco/qtzhang/Device "Engineer"/Job Resume Qintao Zhang.pdf.txt';
echo escapeshellarg($file);
D:\\test>php test.php
"/usr/local/apache2/resumes_txt/5/San Francisco/qtzhang/Device Engineer /Job Resume Qintao Zhang.pdf.txt"
この関数では、引用符がスペースに置き換えられているようです。