Загрузите и скомпилируйте Python (с терминалом):
wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2
tar jxf ./Python-3.3.0.tar.bz2
cd ./Python-3.3.0
./configure --prefix=/opt/python3.3
make && sudo make install
Источник: AskUbuntu
Вы можете использовать табуляцию для длинных имен файлов. Для вашего примера введите что-то вроде rm damn<TAB>.
Из «Я имею в виду, что все равно использовать ls как массив?» часть, я предполагаю, что вопрос состоит в просто потоке результатов ls в какую-то другую команду, таким образом, я отвечаю ссылкой на Xargs и простым примером ее использования:
find -name '*.txt' -print0 | xargs -0 rm
Проверить man find для получения дополнительной информации о том, как найти, фильтровать и передать результаты с помощью команды find и man xargs для полного руководства о xargs. Вышеприведенный пример представляет собой простой классический случай комбинации -print0 + -0 аргументов между двумя используемыми трубами.
Несомненно, неортодоксально, но если вы скопируете сценарий ниже в пустой файл, сохраните его как ls_2 в ~/bin, сделайте его исполняемым и запустите его командой (из любого места):
[ f1]он отобразит список, например:
jacob@jacob-System-Product-Name:~/Bureaublad/all kinds of crap$ ls_2
1. nog te doen.odt
2. otto
3. GW_site_werkmap
4. sanel
5. blacklist.2
6. sanel_edited
7. sanel_gigue.mp3
8. Sprachmemo_011[1].m4a
9. PRG001
10. crap
please enter numbers to remove (separated by a comma): 1,3,5
Просто введите цифры, и элементы (оба каталога и файлы) будут удалены.
Как и "real "ls command, его можно запустить из текущего каталога (только ls_2) или с помощью каталога в качестве аргумента (ls_2 /path/to/directory).
#!/usr/bin/env python3
import os
import shutil
import sys
try:
currdir = sys.argv[1]
except IndexError:
currdir = os.getcwd()
items = os.listdir(currdir)
for i in range(len(items)):
print(str(i+1)+".", items[i])
remove = input("\nplease enter numbers to remove (separated by a comma): ")
indices = [int(it) for it in remove.split(",")]
for i in indices:
file = currdir+"/"+items[i-1]
try:
os.remove(file)
except IsADirectoryError:
shutil.rmtree(file)