#python #bash #perl #batch-rename
#python #bash #perl #пакетное переименование
Вопрос:
Мы запускаем сервер Ubuntu, который автоматически передает файлы FTPs от клиента, и в последнее время эти файлы отображаются как … ‘file.csv;’ ‘file2.csv;
Я безуспешно пытался сформулировать решения bash и Python, но безуспешно. Я просто пытаюсь убрать одинарные кавычки и точки с запятой и сохранить то, что осталось. Это не обязательно должен быть bash, это может быть python или даже perl. Я включил ниже код того, что не работает. Кажется, я даже не могу получить список каталогов. Кто-нибудь может указать мне правильное направление?
for i in '*
do
echo $i
done
Примечание: исправлен код для удаления ошибочного $echo’
Комментарии:
1. используйте shellcheck.net . Если вы вставляете свой код с правильным шаблоном, он сообщает вам, что вы пытаетесь использовать
echo
в качестве переменной, которая, вероятно, не нужна вам.
Ответ №1:
Используйте find ... -exec rename
примерно так:
find . -name "*[;']*" -exec rename "tr/';//d" {} ;
Пример:
# Create example input files:
$ touch "f'o''o'" "b;a;;r;" "b';a;'';z;'"
# Build the command by first confirming that `find` finds them all:
$ find . -name "*[;']*"
./f'o''o'
./b';a;'';z;'
./b;a;;r;
# Find and rename them, one by one:
$ find . -name "*[;']*" -exec rename "tr/';//d" {} ;
# Confirm that rename worked as expected:
$ ls -1rt | tail -n 3
foo
bar
baz
Вы также можете выполнить массовое переименование для ускорения использования xargs
, например
find ... -print0 | xargs -0 ...
но в вашем случае я предполагаю, что переименование файлов один за другим происходит достаточно быстро.
Утилита командной строки rename
доступна во многих вариантах. Большинство из них должны работать для этой задачи. Я использовал rename
версию 1.601 Аристотеля Пагалциса. Для установки rename
просто загрузите его Perl-скрипт и поместите в $PATH
. Или установите rename
с помощью conda
, например, так:
conda install rename
Комментарии:
1. вы можете переименовать их, а затем выполнить задание google.com/amp/s/www.geeksforgeeks.org /…
Ответ №2:
Вы можете начать с использования этого скрипта pyhon 3. Однако я тестировал это только в Windows.
import os
folder = ""
for root, dirs, files in os.walk(folder, topdown=False):
for fn in files:
path_to_file = os.path.join(root, fn)
if "'" in fn or ";" in fn:
print('Removing special characters from file: ' fn)
new_name = fn.replace("'", '').replace(";", '')
os.rename(path_to_file, os.path.join(root, new_name))
Ответ №3:
import os
filesInDirectory = os.listdir(Path)
for filename in filesInDirectory:
if "'" in filename:
filename.replace("'", "")
elif ";" in filename:
filename.replace(";", "")
elif ("'" and ";") in filename:
filename.replace("'", "")
filename.replace(";", "")
Использование Python