我在Linux環境中使用gsutil來管理GCS中的文件。我喜歡能夠使用命令使用STDIN的「gsutil rm」命令
gsutil -m cp -I gs://...
前面有一些其他命令將STDIN傳遞給gsutil以上傳文件;這樣做,我可以維護已上傳的文件的本地列表,或生成特定的模式以上傳並交付。
我希望能夠做一個類似的命令一樣
gsutil -m rm -I gs://...
以同樣擦洗文件。目前,我建立文件的大名單刪除並運行它用下面的代碼:
while read line
do
gsutil rm gs://...
done < "$myfile.txt"
相比,多線程這是非常慢「的gsutil -m RM ...」命令,使-m當您必須從列表中逐個處理文件時,標誌不起作用。我也嘗試過正在運行
gsutil -m rm gs://.../* # remove everything
<my command> | gsutil -m cp -I gs://.../ # put back the pieces that I want
但這涉及重新複製大量數據並浪費大量時間;數據已經存在,只需要刪除一些。任何想法將不勝感激。另外,在重命名文件方面,我沒有太大的靈活性。否則,上傳前的快速重命名將處理所有這些。
閱讀'gsutil rm'的文檔頁面並沒有顯示任何有關可以像這樣的多個項目重載的內容,但是我會盡快對它進行測試!如果這有效,那麼你剛剛解決了我的問題。謝謝@Zach Wilt – user3461099
提供這樣的參數列表應該工作。在rm幫助文檔的概要部分中,我們將模板列爲'gsutil rm [-f] [-R] url ...',這意味着您可以在其中提供任意數量的url。 這不是特別清楚的imo,所以我們應該考慮一個更明顯的方式在文檔中調用它。 –
工作就像一個魅力;我會爲下面的任何人提供一個更強大的示例,但如果可以的話,我會將答案標記爲答案(對StackOverflow的系統還不熟悉)。謝謝@Zach Wilt。 – user3461099