簡體   English   中英

在文件夾之間移動文件不起作用

[英]moving files between folders not working

我正在嘗試使用腳本將超過一百萬個文件從一個文件夾移動到另一個文件夾,但是我沒有得到任何結果,即沒有文件移動並且我沒有收到任何錯誤,腳本檢查它們是否在20個以上的記錄中一個文件夾並將其移動到另一個指定的文件夾中,這是我的腳本。

#!/bin/bash

cd "/home/admin/Lulu/Bo/"

check="ls | wc -l"
if [ $(check) -gt 1 ]
then
   find ./ -name " oAS1_201613*.tar.gz"|grep -v bak| xargs -t -I {} mv {} /RS/2011/
fi

關於如何做到這一點的任何建議?

沒有找到文件的可能原因之一可能是您指定的文件名不正確。 您的文件真的空格字符開頭嗎?

您是否有理由要計算數量? 是否存在符合您的find條件的文件並不意味着$(check) -gt 1 如果是這樣,您可以取消檢查-如果發現沒有匹配的文件,則find不會執行任何操作。

#!/bin/bash

src="/home/admin/Lulu/Bo/"

find "$src/" \
  -type f
  -name "oAS1_201613*.tar.gz" \
  -not -name "*bak*" \
  -print0 |
xargs -0 -t -I {} mv "{}" /RS/2011/

注意-print0xargs -0 ,它們允許您處理名稱中帶有空格的文件。

請注意,您也可以運行mv作為find的選項。 代替-print0 ,您可以使用以下命令:

find "$src/" ... -exec mv -v "{}" /RS/2011/ \;

如果您真的想模擬xargs -t的功能,則可以通過多個-exec命令來實現。

使用xargs的好處之一有時是-P選項,它使您可以並行運行事物。 乍看之下,移動一百萬個文件似乎是一項“艱巨”的工作,但這可能會使您受到IO限制,因此並行運行mv可能並沒有太大幫助。在哪種情況下find .. -exec性能可能與xargs的管道一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM