Первоначально я собирался просто сделать комментарий, но я думаю, что это легче понять.
В Python есть модуль argparse для обработки аргументов командной строки. Примеры немного сбивают с толку, поэтому я бы порекомендовал просто посмотреть на get_args
ниже, пока он не станет понятным.
Вместо того, чтобы пытаться передать его по tee
и xargs rm
, вы можете сделать все это в самом скрипте python.
Вот пример, из которого вы можете построить:
#!/usr/bin/env python2
# allows us to use python3 print function
from __future__ import print_function
import os
import fnmatch
import sys
import argparse
def get_args():
parser = argparse.ArgumentParser()
# note directory has `required=True`, that means the user must provide it
parser.add_argument("--directory", help="Directory to analyze", required=True)
# store_true stores a boolean depending on whether or not the flag was present
parser.add_argument("--delete", help="Delete the files which should be removed", action="store_true", default=False)
args = parser.parse_args() # parses, makes sure all conditions are met, exits if user didn't provide a filename
return args
def analyze(directory):
# do whatever wildcarding here to return a list of files
# heres just an example, remove all *.txt files recursively
files_to_delete = []
for root, dirnames, filenames in os.walk(directory):
# fnmatch is unix-like filename matching
for filename in fnmatch.filter(filenames, "*.txt"):
# abspath gives us the full path, root is the original directory
files_to_delete.append(os.path.abspath(os.path.join(root, filename)))
return files_to_delete
def delete(files):
# write to deleted_files.txt in this function
deleted_file = open("deleted_files.txt", 'w')
for f in files:
if os.path.exists(f): # filepath exists
if os.path.isfile(f): # is a file (not a directory)
os.remove(f) # remove it
deleted_file.write("{}\n".format(f)) # write to the file
else:
print("Could not remove {}, is not a file".format(f), file=sys.stderr)
else:
print("Could not remove {}, does not exist".format(f), file=sys.stderr)
deleted_file.close()
def main():
args = get_args()
files = analyze(args.directory)
# if the user gave us the --delete flag
if args.delete:
delete(files)
else:
# just print it out to the user
for f in files:
print(f)
if __name__ == "__main__":
main()
Если вы просто хотите сохранить, какие файлы должны быть удалены, перенаправьте вывод в файл
python2.7 deletefiles.py --directory test_dir > files_to_delete.txt
[ 1129]
Если вы хотите удалить их:
python2.7 deletefiles.py --directory test_dir --delete
, а затем вы можете cat deleted_files.txt
получить файлы, которые были удалены.
Вот некоторые документы для функций, которые я использовал:
fnmatch.filter
, sys.stderr
, os.path.join
, os.path.abspath
, os.path.isfile
, os.walk
, os.remove
. Если вы хотите удалить каталоги, взгляд на os.removedirs
У меня был большой опыт с Dell 24' мониторы в 1920 * 1200. Они - большой размер, может быть превращен на их сторонах, хорошем угле обзора и хорошим и ярким. Мой довольно стар теперь (одна из первой лощины 24') и имеет немного медленное время отклика, но я люблю его.
Я могу удобно поместить два 80 окон текста столбца рядом на нем в нормальной ориентации и коде (т.е. две сессии затмения).
Это почти столь же высоко как два 19' экранов, которые ориентированы вертикально и разместили любую сторону его.
Отношение ширины/высоты разрешения должно совпасть с отношением физических размеров; я не знаю ни о каких современных мониторах, которые не имеют квадратных пикселей.
Когда я должен был ответить на тот же вопрос для меня, я описал быструю электронную таблицу для математики. Это показывает Ваш 20-дюймовый монитор, чтобы иметь высоту 12 дюймов. Для 1920x1200 я становлюсь 11,7 дюймов высотой для 22-дюймового монитора и 12,7 дюймов высотой для 24-дюймового монитора.
Я очень рекомендую Samsung SyncMaster 245B. Это - большой монитор за разумную цену
"Телевизионные" мониторы размера стандарта всегда находятся в пропорции 3:4.
Диагональный размер является гипотенузой прямоугольного треугольника. A^2 + B^2 == C^2 и 3x4x5 является Пифагорейским триплетом.
Таким образом (диагональный размер / 5) * 4 = ширина,
и (диагональный размер / 5) * 3 = высота.
Готово.
Большая часть жидкокристаллического дисплея 24 дюймов, который я видел, немного более высока, чем 1600x1200 экран, таким образом, пиксели немного больше. У меня есть некоторый HP LP2065's (1600x1200) и LP2465's (1920x1200). LP2465 о том же размере как другой 24-дюймовый жидкокристаллический дисплей (существует только справедливо небольшое количество комплектов оборудования, которые производят ЖК-панели). Видимая область панели на моих мерах по LP2465 52 см шириной 32.5 см высотой. Видимая панель на LP2065 имеет размеры 41 см шириной 31 см высотой.
Это помогает?