Mv
忘記了在同一分區上移動數百萬個文件的正確語法
我有一個命令行指令,可以將 100k 的 jpg 文件移動到同一磁碟/卷/分區上的正確目錄,並且不使用 xargs。怪癖是 jpg 有空格和多個句點或點。例如:“古怪的 image.45 xyz.001 00.78.jpg”。另一個怪癖是古怪的模式是指一組,所以有幾千張這樣的jpg,在最終的jpg擴展之前插入了一組額外的數字:“wacky image.45 xyz.001 00.78.details_0_34748-836389.jpg。我不確定是誰為這台機器做出了設計決定,但不是我!無論如何,我有一些類似的東西:
for f in ./“wacky image.45 xyz.name.s.00.78”*; do mv $f /path/to/destination/; done
我不確定我錯過了什麼。
編輯:使用 MacOS 終端應用程序,它的行為在很大程度上類似於 BSD。
Arkadiusz Drabczyk 用“Put $ f in double quotes: " $ f"" 在上面。
使用它,我可以將 1M+ 文件移動到同一磁碟/卷/分區上的不同目錄。我編輯了這個問題,但我也會把它放在這裡。我正在使用 MacOS 10.14 和終端應用程序,它的行為在很大程度上類似於 BSD。無論好壞,Apple 不再允許在其作業系統上使用 32 位應用程序,因此每個 CLI 工具都是以 64 位編譯的。也許這就是允許大型參數列表的原因?
for f in ./"wacky image.45 xyz.name.s.00.78"*; do mv "$f" /path/to/destination/; done
(注意引號)有同樣的問題
mv ./"wacky image.45 xyz.name.s.00.78"* /path/to/destination/
他們都是全球性的。您需要“數百萬”個文件是
find . -iname 'wacky image.45 xyz.name.s.00.78*' -exec mv "{}" /path/to/destination/
或者如果你想要一些每個文件的邏輯
while read -r F ; do mv "$F" /path/to/destination/ done < <(find . -iname 'wacky image.45 xyz.name.s.00.78*' )