所以我正在通過ssh在遠程服務器上運行一個命令,我需要存盤這個命令的所有輸出,但它一遇到類似ls: cannot access '/downloads/something.txt'的錯誤就會停止。沒有這樣的檔案或目錄。有沒有一種方法可以在忽略任何錯誤的情況下保持行程的進行。如果我沒有被告知發生了錯誤,這并不重要,因為我知道,這些只是少數幾個檔案(在總共16TB的檔案中,不到100MB)。
以下是我的命令:
find /downloads/ -type d ! -writable -print0 | xargs -0 -I{.} find {.}. -maxdepth 1 -type f | xargs -I% ls -l % > myfile.txt
我想用這個命令實作的是: <醇>
ls -l <filename>我這樣做的原因是為了識別共享服務器上所有不能被我洗掉的檔案,如果我嘗試的話。如果有更好的方法來實作這個目標,也請讓我知道......
非常感謝。
非常感謝!
uj5u.com熱心網友回復:
你不應該得到類似ls: cannot access '/downloads/something.txt': 沒有這樣的檔案或目錄,因為你正在使用find來獲取輸入到ls。你得到它們的原因是,你的命令缺少一些-print0和-0選項。也就是說,你可能應該把前兩個管道命令中的stderr重定向到/dev/null,以防你得到任何Permission denied錯誤。在做了這些改動之后,你的命令應該是這樣的:
find /downloads -type d ! -可寫 -print0 2>/dev/null | xargs -0 -I{.} find {.}. -maxdepth 1 -type f -print0 2>/dev/null | xargs -0 -I % ls -l % > myfile.txt
這個命令應該不會產生錯誤,但是如果要掃描16TB的話,可能需要花費一些時間。
你可能還想試試下面的命令,看看它是否更快:
你可能還想試試下面的命令,看看它是否更快。
find /downloads -type d ! -可寫 -exec find {} -maxdepth 1 -type f -print0 ; 2>/dev/null | xargs -0 -I % ls -l % > myfile.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/309926.html
標籤:
