GNU/Linux >> Belajar Linux >  >> Ubuntu

Pindahkan Hanya 8 File Terakhir Di Direktori Ke Direktori Lain?

Saya mencoba memindahkan 8 file terakhir dari Documents direktori ke direktori lain, tetapi saya tidak ingin memindahkannya satu per satu ke direktori tertentu. Apakah mungkin untuk memindahkannya dengan pengganti tail perintah, tetapi untuk direktori, bukan file? Maksud saya, saya ingin melakukannya dengan sesuatu seperti tail -8 ./Documents | mv ./Anotherdirectory atau dengan mv tail -8 ./Documents ./Anotherdirectory .

Sebenarnya, saya sedang mencari cara cerdas untuk memindahkan 8 file terakhir (seperti yang tercantum dalam ls ) dengan cepat (tanpa mengetik setiap nama) ke direktori lain. Ada saran?

Jawaban yang Diterima:

Anda dapat menggunakan for , yang mengulang file secara berurutan, dan memungkinkan kita untuk menghindari penguraian output find atau ls , untuk menghindari masalah dengan spasi dan karakter khusus lainnya dalam nama file. Terima kasih banyak kepada @muru karena telah meningkatkan ini

i=0; j=$(stat ~/Documents/* --printf "%in" | wc -l); for k in ~/Documents/*; do if (( (j - ++i) < 8 )); then echo mv -v "$k" ~/AnotherDirectory; fi; done 

Uji terlebih dahulu dengan echo , lalu hapus echo untuk benar-benar memindahkan file.

Sebagai skrip:

#!/bin/bash
i=0
j=$(stat ~/Documents/* --printf "%in" | wc -l )
for k in ~/Documents/*; do
  if (( (j - ++i) < 8 )); then
    echo mv -v -- "$k" ~/AnotherDirectory
  fi
done

lagi, hapus echo setelah pengujian untuk memindahkan file secara nyata

Penjelasan

  • i=0 memberi tahu shell untuk memulai iterasi pada 0
  • j=$(stat ~/Documents/* --printf "%in" | wc -l ) ini adalah pengaturan variabel j ke bilangan bulat yang sama dengan jumlah total file dalam direktori. Terima kasih atas jawaban Serg atas pertanyaan saya sendiri tentang cara menghitung file dengan andal, apa pun karakter namanya
  • do if (( (j - ++i) < 8 )) untuk setiap iterasi loop, uji apakah hasil j dikurangi berapa kali loop dijalankan kurang dari 8 dan jika ya
  • mv -v -- "$k" ~/AnotherDirectory pindahkan file ke direktori baru

Ubuntu
  1. 5 cara menggunakan perintah pindah di Linux

  2. Bagaimana Memindahkan Semua File (termasuk Tersembunyi) Dari Satu Direktori Ke Yang Lain?

  3. Bagaimana Cara Menyesuaikan Bash Autocomplete Untuk Mencantumkan File Di Direktori Lain?

  1. Bagaimana Cara Memindahkan Semua File Sumber Java Ke Direktori Paket Masing-masing?

  2. Pindahkan File Ke Direktori Beranda Pengguna Lain (tanpa Sudo)?

  3. Direktori .misterius Di Direktori Rumah?

  1. Menghitung jumlah file dalam direktori menggunakan C

  2. Bagaimana cara memindahkan (dan menimpa) semua file dari satu direktori ke direktori lain?

  3. Hapus hanya file dalam direktori di direktori BUKAN linux