У мене є кілька файлів, названих як that : screenshot 13:25.png
Windows, які намагаються відкрити ці файли, ймовірно, через ":".
Як я можу його замінити?
У мене є кілька файлів, названих як that : screenshot 13:25.png
Windows, які намагаються відкрити ці файли, ймовірно, через ":".
Як я можу його замінити?
Відповіді:
У терміналі, cdу потрібний каталог, а потім запустіть це.
rename 's/\:/-/g' *.png -vn
Це дозволить переглянути попереднє перейменування. Його слід замінити :на -.
Якщо це виглядає правильно, видаліть його nз кінця, і тоді воно перейменовано.
Примітка : версії Ubuntu вище 17.04 не постачаються rename, але вони все ще доступні у сховищах за замовчуванням, тому використовуйте sudo apt install renameдля його отримання
n).
rename 's/\:/-/g; s/%28/ /g; s/%29//g' ...
Ось чисте рішення башу:
for i in *:*; do
mv "$i" "${i//:/_}"
done
${var//pattern/replacement}Формат замінить всі входження patternз replacementв змінної $var. Для отримання додаткової інформації про можливості управління базовими рядками, див. Тут .
Якщо ви хочете зробити це для кількох символів, ви можете просто розмістити їх у класі символів. Так, наприклад, щоб замінити всі ;, :, =, +, %, ,з підкресленням, ви можете зробити:
$ 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
В основному, ідея це [ ]означає any of the characters listed. Отже, розміщуючи всіх символів, які ви хочете замінити, у клас символів, усі вони розглядаються відразу.
Для конкретних символів, про які ви просили, речі є дещо складнішими, оскільки деякі з них потрібно уникати (я ігнорую, /оскільки * nix не дозволяє це в іменах файлів більше, ніж це робить Windows, так що це не буде проблема):
$ 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
Зверніть увагу , що я біг \, 'і ", додавши \перед кожним.
Якщо ви віддаєте перевагу графічний інтерфейс, встановіть pyrenamer:
sudo apt-get install pyrenamer
Потім запустіть його:
pyrenamer
У ньому є десятки варіантів шаблонів та перейменовування форматів.
Я віддаю перевагу GUI, але як Nautilus Extension, тобто дії Nautilus Extra Extra :
sudo add-apt-repository ppa:nae-team/ppa
sudo apt-get update
sudo apt-get install nautilus-actions-extra
nautilus -q
(Див. Www.webupd8.org/2011/12/nautilus-action-extra-pack-of-useful.html )
Потім, коли ви вибираєте файли для перейменування та натискаєте Перейменувати у контекстному меню, вам пропонується безліч варіантів перейменування файлів.
У renameutilsпакеті є зручна програма під назвою, qmvяка забезпечує інтерактивне перейменування партії. Ви запускаєте його в каталозі або списку файлів, і він генерує тимчасовий текстовий файл, що містить їх імена файлів, і запускає ваш улюблений редактор. Після виходу з редактора будь-які змінені імена файлів перейменовані відповідно. qmvперетворює проблему пакетного перейменування в проблему редагування тексту.
У цьому випадку ви можете використовувати qmv -f do *:*для редагування імен усіх файлів, що містять двокрапку, а потім :%s/:/_/gкоманду у Vim (або відповідний пошук і заміна у будь-якому редакторі, який ви використовуєте).
Цей -f doпараметр встановлює формат текстового файлу, щоб мати лише ім'я цільового файлу, що робить пошук і заміну більш простим. Формат за замовчуванням містить дві копії імені файлів у кожному рядку, а ви редагуєте лише другу. Це дозволяє зробити це правильно, якщо ви видалили або упорядкували рядки у файлі, але це не завжди найпростіше. Є й інші формати.
За допомогою цього qmvви можете вибрати передачу згенерованого файлу за допомогою команди на ваш вибір, наприклад sed, якщо ви не хочете інтерактивної можливості.
А ось Nautilus Script, який замінює (усі?) Символи, несумісні з Windows, дефісом у всіх вибраних іменах файлів (на основі відповіді тердона ;-)
#!/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 (файловий менеджер XFCE) має приємну вбудовану функцію для масового перейменування файлів. У ньому є варіанти видалення / заміни символів, пошуку та заміни, нумерації файлів тощо.
Встановити тунар:
sudo apt-get install thunar
Відкрийте тунар, перейдіть до своїх файлів, виберіть їх і виберіть «перейменувати» (через контекстне меню або 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