Files

如何從包含數千個文件夾中移動 100 個文件?

  • December 14, 2021

我有一個包含數千個文件的目錄。如何將 100 個文件(任何文件都可以)移動到另一個位置。

for file in $(ls -p | grep -v / | tail -100)
do
mv $file /other/location
done

假設文件名不包含空格、換行符(假設預設值為$IFS)、萬用字元(?*[)或以-.

在 zsh 中最簡單:

mv -- *([1,100]) /other/location/

這將按名稱字典順序移動前 100 個非隱藏文件(任何類型,僅更改為([1,100])正常文件,或除目錄之外的任何類型)。您可以使用glob 限定符選擇不同的排序順序,例如移動 100 個最舊的文件:(.[1,100])``(^/[1,100])``o

mv -- *(Om[1,100]) /other/location/

使用其他 shell,您可以在循環中執行此操作並提前退出。

i=0
for x in *; do
 if [ "$i" = 100 ]; then break; fi
 mv -- "$x" /other/location/
 i=$((i+1))
done

另一種可移植的方法是建構文件列表並刪除除最後一個 100 之外的所有文件

引用自:https://unix.stackexchange.com/questions/12976