انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: مدیریت فایل در لینوکس بوسیله اسکریپت و...  (دفعات بازدید: 7815 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین بهزادubuntu

  • Sr. Member
  • *
  • ارسال: 471
سلام دوستان راستش من مدتیه میخوام این کارو بکنم ولی نتونستم چون نمیدونستم از کجا باید شروع کنم ولی از اینجا شروع شد که برای روشن شدن موضوع قسمتیشو میذارم
حسین جان من مدتیه دارم سعی میکنم شبیه این کار رو در خط فرمان بکنم ! که خیلی اذیت شدم میتونم یک برنامه
اینطوری با این کاربرد ها درست کنم:

گزینه سرچ
در قسمت name پسوند های انتخابی خودم باشه و گزینه برای اظافه و حذف پسوند
در قسمت بالاش گزینه برای 'mv to poshe' و... باشه که دستور رو بتونم دستی عوض کنم ویا کم و زیاد کنم
وگزینه preview داشته باشه

من سرسشم دانلد کردم و لی خیلی پیچیدس میشه همینو تغییر بدم یا یه برنامه اماده بااین مشخصات پیدا کنم یا ساده شدش رو بدون رابط گرافیکی بسازم  ??? لطفا راهنماییم کنید و منبا مناسب بهم معرفی کنید چون نمیدونم دنبال چی بگردم
ممنون  ;)

با چی می خوایین یه اینترفیس درست کنید ؟ جاوا بلدید یا پایتون و غیره . اونطوری ها که میگین اسون نیست . یه زمانی با پایتون نوشته بودم ولی الان ندارمش .

اقا مهدی من اصلا برنامه نویسی کار نکردم و میخوام یه کار عشقی بکنم مثلا الان برای تست از یه اسکریپت که یکی از دوستان نوشته استفاده کردم و یه اسکریپت ساده نوشتم که فایل های jpg رو در ~پیدا میکنه و در مرحله دوم در ~/pic کپی میکنه من همین کارو در ابعاد یکم وسیعتر میخوام بکنم که اگه بشه گرافیکی باشه خیلی بهتره  \\:D/
مثلا دستور
find /home -name '*.jpg' | xargs -i cp -v {} '/home/behzad/pic'
رو به این صورت بکنه:
۱-تیک find رو فعال کنم
۲-پوشه مورد نظر رو که برای پیدا کردن فایل هست بنویسم
۳-تیک فرمت jpg رو فعال کنم
۴-تیک copy رو فعال کنم
۵-پوشه مقصد رو وارد کنم
۶- دکمه action رو بزنم
به همین سادگی  ;D

من از این کارها خیلی برای انجام دادن دارم ولی برای برنامه گرافیکی یا غیر گرافیکی نیاز به برنامه دارم این رو هم از اینترنت پیدا کردم ولی نه دقیقا میدونم چه کاری میکنه نه نیاز منو برطرف میکنه

#!/bin/bash
# 2008-09-23
umask 022
 
### run script with any argument to enable verbose debugging
[[ $# -ne 0 ]] && set -o xtrace && set -o verbose
 
### SHELL OPTIONS
set +o noclobber # allowed to clobber files
set +o noglob # globbing on
set -e # abort on first error
shopt -s extglob
 
VER="1.1"
SEARCH="AskApache";
REPLACE="AskApache1";
SDIR=$PWD;
 
###########################################################################--=--=--=--=--=--=--=--=--=--=--#
###
### FUNCTIONS
###
###########################################################################==-==-==-==-==-==-==-==-==-==-==#
 
#--=--=--=--=--=--=--=--=--=--=--#
# script_title
#==-==-==-==-==-==-==-==-==-==-==#
function script_title(){
  #=# TURNS ON COLORING ONLY FOR TERMS THAT CAN SUPPORT IT
  C="\033[";C0=;C1=;C2=;C3=;C4=;C5=;C6=;C7=;C8=;C9=;
  case ${TERM:-dummy} in linux*|con80*|con132*|console|xterm*|vt*|screen*|putty|Eterm|dtterm|ansi|rxvt|gnome*|*color*)
  C0="${C}0m";C1="${C}1;30m";C2="${C}1;32m";C3="${C}0;32m";C4="${C}1;37m";C5="${C}0;36m";C6="${C}1;35m";C7="${C}0;37m";C8="${C}30;42m";C9="${C}1;36m"; ;;
  esac

  clear
  echo -e "${C1} __________________________________________________________________________ "
  echo -e "| ${C2}             ___       __    ___                 __             ${C1}         |"
  echo -e "| ${C2}            / _ | ___ / /__ / _ | ___  ___ _____/ /  ___        ${C1}         |"
  echo -e "| ${C2}           / __ |(_-</  '_// __ |/ _ \/ _ \`/ __/ _ \/ -_)       ${C1}         |"
  echo -e "| ${C3}          /_/ |_/___/_/\_\/_/ |_/ .__/\_,_/\__/_//_/\__/        ${C1}         |"
  echo -e "| ${C3}                               /_/                              ${C1}         |"
  echo -e "|                                                                          |"
  echo -e "|                 ${C4} FIND AND REPLACE SCRIPT Version ${VER} ${C1}                    |"
  echo -e "${C1} __________________________________________________________________________ ${C0} \n\n"
}
 
#--=--=--=--=--=--=--=--=--=--=--#
# pm
#==-==-==-==-==-==-==-==-==-==-==#
function pm()
{ echo -en "\n\n${C2}>>> ${C4}${1} ${C0}\n\n"; return 0; }
 
#--=--=--=--=--=--=--=--=--=--=--#
# pi
#==-==-==-==-==-==-==-==-==-==-==#
function pi()
{ echo -e "${C6}=> ${C4}${1} ${C0}"; return 0; }
 
#--=--=--=--=--=--=--=--=--=--=--#
# ok_continue
#==-==-==-==-==-==-==-==-==-==-==#
function ok_continue()
{ local ans; echo -en "${C4} \n [ Press any key to continue ] ${C0} \n"; read -n 1 ans; return 0; }
 
#--=--=--=--=--=--=--=--=--=--=--#
# yes_no
#==-==-==-==-==-==-==-==-==-==-==#
function yes_no()
{ local a YN=65; echo -en "${C2}>>> ${C4}${1:-Q} [y/n] ${C0}"; read -n 1 a; case $a in [yY]) YN=0; ;; esac; return $YN; }
 
#--=--=--=--=--=--=--=--=--=--=--#
# p_done
#==-==-==-==-==-==-==-==-==-==-==#
function p_done()
{ sleep 1; echo -e "\n${C8} DONE ${C0} \n"; sleep 1; return 0; }
 
#--=--=--=--=--=--=--=--=--=--=--#
# get_settings
#==-==-==-==-==-==-==-==-==-==-==#
function get_settings(){
  local a cha
  script_title
  while true; do
  for a in "SDIR" "SEARCH" "REPLACE"; do
  cha=g
  echo -en "\n ${C4}(Enter for Default: ${!a} )${C0}\n ${a}${C6}=> ${C0} "; read -e cha; echo;
  [[ ${#cha} -gt 2 ]] && eval "$a"=$cha;
  done
  yes_no "ARE THESE SETTINGS CORRECT" && echo -e "\n\n" && break
 
  done
}
 
#--=--=--=--=--=--=--=--=--=--=--#
# search_and_replace
#==-==-==-==-==-==-==-==-==-==-==#
function search_and_replace(){
  for i in $(seq 0 $((${#FOUNDFILES[@]} - 1))); do
  thefile=${FOUNDFILES[$i]}

  if [[ $1 -eq 0 ]]; then
  echo -e "\n\n\n___________________________________________________________________\n"
  echo -e "${C4}FILE:  ${C3}${thefile} ${C2}($(command du -hs ${thefile}|awk '{ print $1}'))"
  echo -e "${C4}Type:  ${C6}$(command file -b ${thefile})"
  echo -e "${C7}Matching Lines:${C0}"
  grep --color=always $SEARCH $thefile
  echo -e "\n___________________________________________________________________\n"

  while true; do
  yes_no "Replace occurances of ${SEARCH} with ${REPLACE}?" && echo -e "\nREPLACING...\n" && sed -i -e "s%${SEARCH}%${REPLACE}%g" $thefile && p_done && break
  echo -e "\nSKIPPING..\n" && p_done && break
  done

  else
  sed -i -e "s%${SEARCH}%${REPLACE}%g" $thefile
  fi
  done

  return 0;
}
 
############################################################################################################
###
### MAIN CODE
###
############################################################################################################
 
#=# CATCH SCRIPT KILLED BY USER
trap 'echo error; kill -9 $$' SIGHUP SIGINT SIGTERM
 
#=# ALLOWS SCRIPT TO WORK WHEN RUN STARTED FROM ANY DIRECTORY
cd `dirname $0`
 
#=# MAKE MAIN SCRIPT NICE AS POSSIBLE SINCE IT DOESNT DO MUCH
renice 19 -p $$ &>/dev/null
 
#=# GET SCRIPT SETTINGS
get_settings
 
#=# DISPLAY SCRIPT TITLE
script_title
 
cd $SDIR
declare -a FOUNDFILES=( `grep -R -l $SEARCH . 2>/dev/null` );
declare -a FOUNDMATCHES=(  );
for i in $(seq 0 $((${#FOUNDFILES[@]} - 1))); do F=${FOUNDFILES[$i]}; FOUNDMATCHES[$i]=$(grep -c $SEARCH $F); done
 
pm "FOUND ${SEARCH} IN ${#FOUNDFILES[@]} FILES"
for i in $(seq 0 $((${#FOUNDFILES[@]} - 1))); do echo -e "${C4}${FOUNDFILES[$i]} ${C6}=>${C4} ${FOUNDMATCHES[$i]} matches"; done
echo -e "\n"
 
while true; do
 yes_no "Replace all occurances of ${SEARCH} with ${REPLACE} without prompting?" && search_and_replace 1 && p_done && break
 search_and_replace 0 && p_done && break
done
 
cd $OLDPWD
 
exit 0
http://snippets.dzone.com/
لطفا راهنماییم کنید  :)
کتيبه سازمان ملل کوروش کبير
خداوند کشور را از دشمن خشکسالی و دروغ محفوظ دارد

برنامه حسابداری

آفلاین مهدی پیشگوی

  • High Hero Member
  • *
  • ارسال: 3100
  • جنسیت : پسر
  • لينوكس يعني آزادي ، امنيت
خوب یه راه آسون این هستش که وقتی اینترفیس رو ساختی و همه چیز رو توش تنظیم کردی مثلا مواردی که گفتی بیایی در انتها که مثلا کلید اجرا رو میزنی یه دستور برات تو خط فرمان ایجاد کنه که مواردی که کاربر دلش می خواد رو اجرا کنه .این آسونترین راه هستش فکر کنم

آفلاین بهزادubuntu

  • Sr. Member
  • *
  • ارسال: 471
نقل‌قول
مواردی که گفتی بیایی در انتها که مثلا کلید اجرا رو میزنی یه دستور برات تو خط فرمان ایجاد کنه که مواردی که کاربر دلش می خواد رو اجرا کنه
نمیدونم چطور این کارو بکنم که مثلا تو خط فرمان ازم بپرسه  ???
 ادرس مبدا رو وارد کنید
کلمه جستجو رو وارد کنید
و...
کتيبه سازمان ملل کوروش کبير
خداوند کشور را از دشمن خشکسالی و دروغ محفوظ دارد

برنامه حسابداری

آفلاین Behnam Golds

  • High Hero Member
  • *
  • ارسال: 1368
  • جنسیت : پسر
میتونی از zenity توی اسکریپتت استفاده کنی ، مثلا اینطوری :

#!/bin/bash

if zenity --question --title "Yes Or No" --text "Do You Agree?"

then
 echo "Yes"

else
 echo "No"
fi

با اجرای این اسکریپت یه پنجره باز میشه ، اگر روی OK  کلیک کنی توی خروجی Yes و اگر روی Cancel کلیک کنی توی خروجی No نمایش داده میشه. برای راهنمای کامل از man zenity و برای نمونه های بیشتر از اسکریپت های ناتیلوس میتونی استفاده کنی :

http://wiki.ubuntu-ir.org/NautilusScripts

آفلاین بهزادubuntu

  • Sr. Member
  • *
  • ارسال: 471
پاسخ به: مدیریت فایل در لینوکس بوسیله اسکری&
« پاسخ #4 : 21 بهمن 1387، 07:09 ب‌ظ »
ممنون بهنام جان
اینطوریش کردم ولی در دو حالت قبول یا رد کپی رو انجام میده
#!/bin/bash


echo "


"
read ""


find ~ -name '*.jpg'

echo "
clear


"
if zenity --question --title "Yes Or No" --text "Do You Copy in ~/pic?"

then
 echo "Yes"

else
 echo "No"
fi



find ~ -name '*.jpg' | xargs -i cp -v {} '~/pic'
در ضمن میشه همشو گرافیکی کرد؟ :D البته در مرحله پایانی
« آخرین ویرایش: 21 بهمن 1387، 07:41 ب‌ظ توسط بهزادubuntu »
کتيبه سازمان ملل کوروش کبير
خداوند کشور را از دشمن خشکسالی و دروغ محفوظ دارد

برنامه حسابداری

آفلاین Behnam Golds

  • High Hero Member
  • *
  • ارسال: 1368
  • جنسیت : پسر
پاسخ به: مدیریت فایل در لینوکس بوسیله اسکری&
« پاسخ #5 : 21 بهمن 1387، 07:41 ب‌ظ »
فکر کنم توی اوبونتو به صورت پیش فرض نصب باشه .طبق خروجی ببین بسته ای به اسم libnotify  هست که نصب کنی یا نه.

ویرایش :
دستور مورد نظر رو به جای echo اولی قرار بده . شما خارج از if  داری کپی میکنی.

if zenity --question --title "Yes Or No" --text "Do You Copy in ~/pic?"

then
 find ~ -name '*.jpg' | xargs -i cp -v {} '~/pic'
fi
« آخرین ویرایش: 21 بهمن 1387، 07:44 ب‌ظ توسط Behnam Golds »

آفلاین بهزادubuntu

  • Sr. Member
  • *
  • ارسال: 471
درست شد و پست رو ویرایش کردم لطفا دوباره ببینید  :)

ویرایش:
ممنون کار کرد مرحله بعدی رو طراحی میکنم و نکاتی که نمیدونم رو میپرسم  :P
« آخرین ویرایش: 21 بهمن 1387، 10:09 ب‌ظ توسط بهزادubuntu »
کتيبه سازمان ملل کوروش کبير
خداوند کشور را از دشمن خشکسالی و دروغ محفوظ دارد

برنامه حسابداری

آفلاین بهزادubuntu

  • Sr. Member
  • *
  • ارسال: 471
پاسخ به: مدیریت فایل در لینوکس بوسیله اسکری&
« پاسخ #7 : 22 بهمن 1387، 02:05 ق‌ظ »
بهنام جان من رد یا قبول رو به سرچ دادم ولی دیگه مرحله کپی رو انجام نمیده  ](*,)
#!/bin/bash

echo "

"

read ""

if zenity --question --title "Yes Or No" --text "Do You Search Pics in ~?"

then
 find ~ -name '*.jpg'
fi

else
 echo "No"
fi

"
read ""
 

echo "
clear


"
if zenity --question --title "Yes Or No" --text "Do You Copy in ~/pic?"

then
 find ~ -name '*.jpg' | xargs -i cp -v {} '~/pic'
fi

else
 echo "No"
fi



find ~ -name '*.jpg' | xargs -i cp -v {} '~/pic'
یه لطفی میکنی حالا که سطح اطلاعات منو در این مورد دیدی یه راهنما بهم معرفی کنی که نخوام همش سوال ابتدایی بپرسم ممنون
« آخرین ویرایش: 22 بهمن 1387، 02:10 ق‌ظ توسط بهزادubuntu »
کتيبه سازمان ملل کوروش کبير
خداوند کشور را از دشمن خشکسالی و دروغ محفوظ دارد

برنامه حسابداری

آفلاین Behnam Golds

  • High Hero Member
  • *
  • ارسال: 1368
  • جنسیت : پسر
#!/bin/bash

if zenity --question --title "Yes Or No" --text "Do You Want to Copy in
~/pic?"

then

 find ~ -name '*.jpg' | xargs -i cp -v {} ~/pic

fi

به نظر من دو راه بیشتر نداری : ۱) کلا بیخیال بشی.  ۲)یه مدت با یه زبان برنامه نویسی به صورت جدی کار کنی.
شایدم تفریحی داری اینکارو انجام میدی نمیدونم .منبع  توی گوگل زیاده.

آفلاین بهزادubuntu

  • Sr. Member
  • *
  • ارسال: 471
نشد بهنام جان اصلا به قسمت دوم که سرچ و کپی هست نمیره
نقل‌قول
به نظر من دو راه بیشتر نداری : ۱) کلا بیخیال بشی.
;D چرا بیخیال شم؟
نقل‌قول
۲)یه مدت با یه زبان برنامه نویسی به صورت جدی کار کنی.
شایدم تفریحی داری اینکارو انجام میدی نمیدونم .منبع  توی گوگل زیاده.
فکر نکنم برای یه کار ساده یی که میخوام بکنم اطلاعات زیادی لازم باشه  ???
میدونم منبا توی گوگل زیاده خیلی هم گشتم اونی که میخوام امادشو گیر بیارم  :D ولی اصلا نمیدونم اینها چی هست و چرا من مینویسم یه کاری برام انجام میده البته یه چیزایی دستو پا شکسته خوندم ولی مثلا نمیدونم چه رشته یی رو بخونم برم جلو تا مفهوم یک دستورهایی مثل
if zenity --question --title "Yes Or No" --text
رو کلمه به کلمه یاد بگیرم  :)
کتيبه سازمان ملل کوروش کبير
خداوند کشور را از دشمن خشکسالی و دروغ محفوظ دارد

برنامه حسابداری

آفلاین Behnam Golds

  • High Hero Member
  • *
  • ارسال: 1368
  • جنسیت : پسر
درسته کار ساده‌ای میخوای انجام بدی ولی نمیدونم اسکریپتهایی که میگذاری چرا اینقدر پر اشکال به نظر میاد شاید هم من متوجه نمیشم  این چند خط اولی که نوشتی به چه دردی میخوره و از چه قانون نحوی پیروی میکنه :

echo "

"

read ""

یا  این قسمت :

"
read ""
 

echo "
clear


"


یا مثلا اگر قراره  یک کار رو بدون قید و شرط انجام بدی چرا از if  استفاده میکنی و اگر باید شرطی اعمال بشه چرا دستور رو  خارج از بدنه if قرار میدی؟
برای اون دستور هم اول ساختار if رو یاد بگیر و بعد از manual  برای zenity  استفاده کن و گزینه های مختلف رو آزمایش کن ببین چه تغییری حاصل میشه و در  هر حالت چه خروجی میده.

آفلاین مهدی پیشگوی

  • High Hero Member
  • *
  • ارسال: 3100
  • جنسیت : پسر
  • لينوكس يعني آزادي ، امنيت
بهزادubuntu  عزیز تو برنامه نویسی مشکلات زیادی داری و اطلاعاتت خیلی پایینه ولی پشتکار خوبی داری . اگه یه خورده اطلاعاتت بالا بود یه کتاب بسیار جالب برنامه نویسی شل اسکریپت رو بهت می دادم کیف می کردی . یه خورده خودت تمرین و ممارست بکن و در مورد برنامه نویسی کتابهای اینترنتی رو مطالعه کن . موفق باشی ;)

آفلاین بهزادubuntu

  • Sr. Member
  • *
  • ارسال: 471
پاسخ به: مدیریت فایل در لینوکس بوسیله اسکری&
« پاسخ #12 : 22 بهمن 1387، 08:10 ق‌ظ »
ممنون مهدی جان راستی اسکریپت خودم رو هم درست کردم
#!/bin/bash


if zenity --question --title "Yes Or No" --text "Do You Search Pics in ~?"

then
 find ~ -name '*.jpg'
fi

if zenity --question --title "Yes Or No" --text "Do You Want to Copy in ~/pic?"

then
 find ~ -name '*.jpg' | xargs -i cp -v {} ~/pic
fi
و الان دارم تو این pdf ها میگردم ببینم چی بدردم میخوره  :)
http://portal.farsilinux.org/index.php?module=htmlpages&func=display&pid=12
کتيبه سازمان ملل کوروش کبير
خداوند کشور را از دشمن خشکسالی و دروغ محفوظ دارد

برنامه حسابداری

آفلاین بهزادubuntu

  • Sr. Member
  • *
  • ارسال: 471
سلام
من اینو دانلد کردم شاید کارمو راه بندازه ولی موقع اجرا چند خط ارور میده که نمیدونم چطور درستش کنم
کتيبه سازمان ملل کوروش کبير
خداوند کشور را از دشمن خشکسالی و دروغ محفوظ دارد

برنامه حسابداری

آفلاین بهزادubuntu

  • Sr. Member
  • *
  • ارسال: 471
پاسخ به: مدیریت فایل در لینوکس بوسیله اسکری&
« پاسخ #14 : 10 اسفند 1387، 04:50 ق‌ظ »
سلام
چطور میتونم یه دستور مثل mv file1 file2 رو در این فرمان قرار بدم بطوری که جای تایپی که بمن میده من بتونم file1 رو توش بنویسم؟  ???
zenity --entry


نمیدونید دستوری مثل zenity برای qt چی هست؟ راهنماهای خیلی کمی توی اینترنت داره
« آخرین ویرایش: 10 اسفند 1387، 04:55 ق‌ظ توسط بهزادubuntu »
کتيبه سازمان ملل کوروش کبير
خداوند کشور را از دشمن خشکسالی و دروغ محفوظ دارد

برنامه حسابداری