GNU/Linux >> Belajar Linux >  >> Linux

File mv Linux dengan nama panjang

Solusi 1:

untuk satu file coba

mv dir1/dir2/dir3/file.{txt,txt.old}

di mana X{a,b} konstruksi perluas ke Xa Xb , Anda dapat memiliki pratinjau menggunakan

echo dir1/dir2/dir3/file.{txt,txt.old}

untuk melihat apakah itu sesuai dengan kebutuhan Anda.

catatan:

  1. itu untuk banyak file

    mv dir1/dir2/dir3/file{1,2,3}.{txt,txt.old}
    

tidak mungkin untuk memperluas apa yang Anda inginkan. (ini akan diperluas menjadi campuran dari file.txt file1.txt.old file2.txt ...)

  1. {txt,txt.old} dapat disingkat menjadi {,.old} sesuai komentar

  2. jika nama direktori tidak ambigu, karakter pengganti dapat digunakan.

    mv *1/*2/d*/*.{,old}
    

untuk banyak file gunakan rename

rename -n s/txt/old.txt/ dir1/dir2/dir3/file*.txt 

jatuhkan -n untuk memiliki penggantian nama yang efektif.

Solusi 2:

Perintah rename mengganti nama semua file yang cocok. Tujuan utamanya adalah untuk mengganti nama banyak file, tetapi jika ekspresi Perl hanya cocok dengan satu file, maka itu hanya akan mengganti nama file tunggal ini. Untuk detail dan sintaks khusus distro, silakan baca halaman manual:man rename .

Contoh penggunaan:ganti nama "/path/file.txt" menjadi "/path/file.txt.old":

rename 's/file.txt/file.txt.old/g' /path/file.txt

Notasi yang lebih pendek (berkat shalomb):

rename 's/$/.old/' /path/file.txt
rename '$_.=".old"' /path/file.txt

Untuk uji coba gunakan rename -n .

Lebih banyak contoh dan detail dapat ditemukan di https://thepcspy.com/read/bulk-rename-files-in-ubuntu/

Solusi 3:

Saya suka solusi @archemar dalam menggunakan ekspansi {}, karena Anda bisa menggunakannya saat Anda sudah memulai baris perintah. Berikut adalah beberapa kemungkinan lain untuk kelengkapan:

F="dir1/dir2/dir3/file.txt" ; mv "$F" "$F.old"

(kutipan hanya diperlukan jika Anda memiliki spasi atau karakter pemecah kata lain dalam nama)

mymv() {
    mv "$1/$2" "$1/$3"
}

mymv dir1/dir2/dir3 file.txt file.txt.old
mymv dir5/dir6/dir7 file.txt file.txt.old

Catatan:

  • Ini adalah sintaks bash, Anda mungkin menggunakan shell lain
  • mymv bisa berupa string yang masuk akal, saya menggunakan mymv untuk "my move".
  • Definisi fungsi dapat diletakkan di .bash_profile
  • Anda

Satu lagi:

cd dir1/dir2/dir3 ; mv file.txt file.txt.old ; cd -

tapi

(cd dir1/dir2/dir3/ && exec mv file.txt file.txt.old)

(dari @Adam dan @CharlesDuffy) bisa dibilang lebih baik jika cd gagal.

Solusi 4:

Untuk kasus satu kali, jika saya tidak ingin mengubah direktori saya saat ini, saya mungkin hanya menggunakan sub-shell:

(cd dir1/dir2/dir3/ && mv file.txt file.txt.old)

Karena kamu cd di dalam sub-shell, Anda belum mengubah direktori Anda di shell Anda yang sebenarnya

Solusi 5:

Jika Anda ingin memasukkan subdirektori untuk mempersingkat mv perintah, tetapi ingin kembali ke direktori saat ini setelah itu, ada dua cara untuk melakukannya. Salah satunya adalah dengan meletakkan cd dan mv dalam subkulit (seperti yang telah disarankan).

Cara lainnya adalah dengan menggunakan pushd dan popd untuk mengubah direktori:

pushd dir1/dir2/dir3/; mv file.txt file.txt.old; popd

pushd perintahnya seperti cd , kecuali itu pertama-tama mendorong nama direktori saat ini ke tumpukan. popd menghapus nama teratas dari tumpukan dan mengubah ke direktori itu.


Linux
  1. Tingkatkan kinerja sistem Linux dengan noatime

  2. Urutkan Perintah di Linux dengan Contoh

  3. Bagaimana cara menulis file dengan C di Linux?

  1. Ganti nama file di terminal Linux

  2. Salin file Linux dengan ETA?

  3. Bagaimana saya melihat du dalam GB bukannya MB di linux?

  1. Izin File di Linux dengan Contoh

  2. Periksa izin file Linux dengan ls

  3. Bagaimana cara mendapatkan nama file dengan Linux 'find'?