Saya memiliki beberapa file dengan nama that : screenshot 13:25.png
Windows berjuang untuk membuka file-file ini mungkin karena ":".
Bagaimana saya bisa menggantinya?
Saya memiliki beberapa file dengan nama that : screenshot 13:25.png
Windows berjuang untuk membuka file-file ini mungkin karena ":".
Bagaimana saya bisa menggantinya?
Jawaban:
Di terminal, cdke direktori yang benar dan kemudian jalankan ini.
rename 's/\:/-/g' *.png -vn
Ini akan melihat pratinjau penggantian nama. Itu harus diganti :dengan -.
Jika itu terlihat benar, hapus ndari akhir dan kemudian akan melakukan penggantian nama yang sebenarnya.
Catatan : Versi Ubuntu di atas 17,04 tidak disertakan bersama rename, tetapi masih tersedia di repositori default, jadi gunakan sudo apt install renameuntuk mendapatkannya
nmudah.
rename 's/\:/-/g; s/%28/ /g; s/%29//g' ...
Inilah solusi bash murni:
for i in *:*; do
mv "$i" "${i//:/_}"
done
The ${var//pattern/replacement}Format akan mengganti semua kejadian dari patterndengan replacementdi variabel $var. Untuk informasi lebih lanjut tentang kemampuan maipulation string bash, lihat di sini .
Jika Anda ingin melakukan ini untuk beberapa karakter, Anda bisa menempatkannya di kelas karakter. Jadi, misalnya, untuk mengganti semua ;, :, =, +, %, ,dengan garis bawah, Anda bisa melakukan:
$ ls
1foo:bar 2foo:bar:baz 3foo;bar 4foo=bar 5foo%bar 6foo,bar 7foo+bar
$ for i in *; do mv "$i" "${i//[:;=%,+]/_}"; done
$ ls
1foo_bar 2foo_bar_baz 3foo_bar 4foo_bar 5foo_bar 6foo_bar 7foo_bar
Pada dasarnya, idenya adalah bahwa [ ]cara any of the characters listed. Jadi, dengan menempatkan semua karakter yang ingin Anda ganti di kelas karakter, semuanya ditangani sekaligus.
Untuk karakter spesifik yang Anda minta, beberapa hal sedikit lebih kompleks karena beberapa dari mereka perlu melarikan diri (saya mengabaikan /karena * nix tidak mengizinkannya dalam nama file lebih dari Windows sehingga tidak akan menjadi isu):
$ ls
1foo<bar 2foo>bar 3foo:bar 4foo\bar 5foo|bar 6foo*bar 7foo?bar 8foo"bar 9foo'bar
$ for i in *; do mv "$i" "${i//[<>:\\|*\'\"?]/_}"; done
$ ls
1foo_bar 2foo_bar 3foo_bar 4foo_bar 5foo_bar 6foo_bar 7foo_bar 8foo_bar 9foo_bar
Perhatikan bahwa saya lolos \, 'dan "dengan menambahkan \di depan masing-masing.
Jika Anda lebih suka GUI, instal pyrenamer:
sudo apt-get install pyrenamer
Kemudian jalankan:
pyrenamer
Ini memiliki banyak opsi untuk pola dan mengubah nama format.
Saya lebih suka GUI tetapi sebagai Ekstensi Nautilus, yaitu Tindakan Nautilus Ekstra :
sudo add-apt-repository ppa:nae-team/ppa
sudo apt-get update
sudo apt-get install nautilus-actions-extra
nautilus -q
(Lihat www.webupd8.org/2011/12/nautilus-actions-extra-pack-of-useful.html )
Kemudian ketika Anda memilih file yang akan diganti namanya dan klik Ubah nama dari menu konteks, Anda ditawari banyak opsi untuk mengganti nama file.
The renameutilspaket memiliki program yang berguna yang disebut qmvyang menyediakan penggantian nama batch yang interaktif. Anda menjalankannya di direktori atau daftar file, dan itu menghasilkan file teks sementara yang berisi nama file mereka, dan mulai editor favorit Anda. Saat Anda keluar dari editor, nama file apa pun yang Anda ubah diganti namanya. qmvmengubah masalah batch mengubah nama menjadi masalah pengeditan teks.
Dalam hal ini, Anda dapat menggunakan qmv -f do *:*untuk mengedit nama-nama semua file yang mengandung titik dua, dan kemudian :%s/:/_/gperintah di Vim (atau pencarian-dan-ganti yang sesuai di editor apa pun yang Anda gunakan).
The -f dopilihan set format file teks untuk memiliki file tujuan-nama saja, yang membuat pencarian dan mengganti sederhana. Format default memiliki dua salinan nama file di setiap baris, dan Anda hanya mengedit yang kedua. Itu memungkinkan untuk melakukan hal yang benar jika Anda telah menghapus atau memesan ulang baris dalam file, tetapi itu tidak selalu yang termudah. Ada format lain juga.
Dengan qmv, Anda dapat memilih untuk mem-pipe file yang dihasilkan melalui perintah pilihan Anda, seperti sed, jika Anda tidak menginginkan kemampuan interaktif.
Dan di sini adalah Script Nautilus yang menggantikan (semua?) Karakter Windows-tidak kompatibel dengan tanda hubung di semua nama file yang dipilih (berdasarkan jawaban oleh terdon ;-)
#!/bin/bash
filesall=""
while [ $# -gt 0 ]
do
files=`echo "$1" | sed 's/ /\?/g'`
filesall="$files $filesall"
shift
done
for i in $filesall; do mv "$i" "${i//[<>:\\|*\'\"?]/-}"; done
Thunar (manajer file XFCE) memiliki fitur build in yang bagus untuk penggantian nama file secara massal. Ini memiliki opsi untuk menghapus / mengganti karakter, mencari dan mengganti, menomori file dan banyak lagi.
Instal thunar:
sudo apt-get install thunar
Buka thunar, ramban ke file Anda, pilih dan dan pilih 'rename' (melalui menu konteks atau F2)
@echo off
echo.
echo. How many Characters Do You Want To Remove
echo.
echo. From The End Of The FileName ?
echo.
echo.
set /p variable=" > "
setlocal enabledelayedexpansion
for /f "delims=" %%a in (' dir /b /a-d *.mp3') do (
set oldName=%%a
Set newName=!oldName:~0,-%variable%!.mp3
Ren "!oldName!" "!newName!"
)
exit