好的,所以我做了一些非常愚蠢的事情(復制檔案并將其重命名為“。”),因為我認為它只會將其復制為 .uniprot_sprot.fasta.gz.icloud。
cp /path/.uniprot_sprot.fasta.gz.icloud .
現在我不知道如何從當前目錄中洗掉它,因為它會洗掉'。' 本身。
我能做什么?這行不通。它說:沒有這樣的檔案或目錄
rm .uniprot_sprot.fasta.gz.icloud
另一方面:
ls -a
給出了這個:
.
..
uniprot_sprot.fasta.gz.icloud
uj5u.com熱心網友回復:
您還沒有復制檔案并將其重命名.(無論如何,如果您運行的是理智的 *nix)。相反,您已使用原始檔案的名稱將該檔案復制到當前目錄。(如果您將目錄作為目標傳遞,檔案將被放置在該目錄中。 是當前目錄,所以這就是所有發生的事情。)如果您想洗掉它,您可以直接或顯式地洗掉它。您嘗試做的是洗掉名稱以 開頭的檔案,這是另一回事。cp.rm uniprot_sprot.fasta.gx.iscloudrm ./uniprot_sprot.fasta.gx.iscloud.
編輯:當我寫這篇文章時我沒有意識到,但這實際上只是.作為一個真實的、常規的硬鏈接存在。在系統呼叫級別,您可以創建一個檔案,其名稱包含除/and \x00(是的,包括\n)之外的任何內容,假設您的檔案系統允許它。但是,鏈接.和..已經存在,因此作為檔案名不可用。@thatotherguy 鏈接到系統呼叫的內核源代碼,rmdir表明在現代 Linux 中至少是內核本身最終阻止您洗掉.和...
請注意,在 bash 中,.行首本身表示source.
有關檔案名問題的更多資訊,請參閱有關 unix.se 及其鏈接的 dupe 的此問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410605.html
標籤:
上一篇:如何遍歷檔案以復制到s3存盤桶中
