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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: anishtain4 در 31 تیر 1391، 08:57 ق‌ظ

عنوان: درخواست shell script
ارسال شده توسط: anishtain4 در 31 تیر 1391، 08:57 ق‌ظ
سلام دوستان
من یه تعداد زیادی فایل دارم ( در حد 300 تا)
این فایل ها دو دسته هستن، یه سری با اسامی اصلی، و فایل های تکمیلی که همون اسم اصلی رو دارن و آخرشون AS نوشته شده. مشکل من اینه که اینا کنار هم نیستن. فایل های اصلی همشون تو یه فولدر هستن، و فایل های تکمیلی تو یه فولدر دیگه اما ساختار فولدرها یک شکل نیست. از دوستان کسی می تونه یه شل اسکریپت بنویسه که فایل های تکمیلی رو کپی کنه کنار اصلیشون؟
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: سلمان م. در 31 تیر 1391، 09:06 ق‌ظ
نیازی به shell scripting نیستمد. ما یک نوع کپی داریم که دقیقا همون فایل اول رو یکی نگه می‌داره ولی مثل اینکه دوتا فایل داری! الآن برات توضیح ‌می‌دم.
یه دستوری بود که با ترمینال می‌زدیم ولی الآن متاسفانه یادم رفته اگه یادم اومد برات می‌ذارم. دستور ایجوریی بود، اگه می‌زدی فایل a رو دو تا می‌کرد و مثلا حتی اسم فایل دومی رو می‌ذاشتی b، ولی هرکدومش رو که ویرایش می‌کردی اون یکی دیگه هم ویرایش می‌شد و تغییر پیدا می‌کرد اگه اونو یادم اومد همین‌جا می‌ذارم.
فعلا می‌تونی از از دستور make link استفاده کنی. رو خود هر فایل راست کلیک کن و بعد بزن make link. اینجوری اگه فایل جدید رو دست‌کاری کنی مثل اینه که فایل اصلی رو ویرایش کردی.
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: alend در 31 تیر 1391، 11:00 ق‌ظ
میشه منظورت را واضح تر بگی!
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: دانیال بهزادی در 31 تیر 1391، 01:28 ب‌ظ
نیازی به shell scripting نیستمد. ما یک نوع کپی داریم که دقیقا همون فایل اول رو یکی نگه می‌داره ولی مثل اینکه دوتا فایل داری! الآن برات توضیح ‌می‌دم.
یه دستوری بود که با ترمینال می‌زدیم ولی الآن متاسفانه یادم رفته اگه یادم اومد برات می‌ذارم. دستور ایجوریی بود، اگه می‌زدی فایل a رو دو تا می‌کرد و مثلا حتی اسم فایل دومی رو می‌ذاشتی b، ولی هرکدومش رو که ویرایش می‌کردی اون یکی دیگه هم ویرایش می‌شد و تغییر پیدا می‌کرد اگه اونو یادم اومد همین‌جا می‌ذارم.
فعلا می‌تونی از از دستور make link استفاده کنی. رو خود هر فایل راست کلیک کن و بعد بزن make link. اینجوری اگه فایل جدید رو دست‌کاری کنی مثل اینه که فایل اصلی رو ویرایش کردی.
منظورت ln عه؟
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: nixoeen در 31 تیر 1391، 07:17 ب‌ظ
از دوستان کسی می تونه یه شل اسکریپت بنویسه که فایل های تکمیلی رو کپی کنه کنار اصلیشون؟
با دستور find می‌تونی اینکار رو انجام بدی.
find /path -name "*AS" -type f -exec cp "{}" /newpath \;
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: anishtain4 در 31 تیر 1391، 09:59 ب‌ظ
گویا منظورم رو اصلا درست نرسوندم.
فرض کنید پنج تا فایل داریم به این صورت
asli/folderA/1.dwg
asli/folderA/2.dwg
asli/folderA/3.dwg
asli/folderB/4.dwg
asli/folderB/5.dwg

حالا این فایل ها رو میدیم دست یه بنده خدایی، اون تو همه این فایل ها یه سری تغییرات میده و اینطوری میشه:

build/dorostA/1 as.dwg
build/dorostB/2 as.dwg
build/dorostC/3as.dwg
build/dorostA/4 As.dwg
build/dorostD/5 as.dwg

یعنی اسم فایل ها دقیقا همون قبلیا هست که یه as بهشون اضافه شده و تو همون فولدر ها هم نیستن. حالا کاری که باید انجام بدم اینه که سری دوم رو کنار سری اول کپی کنم که هر فایل اصلی نسخه ی ای رو هم که as داره کنارش داشته باشه. فقط مشکل اینه که تعداد فایل ها نزدیک 300 تا هست و دستی نمیشه این کارو کرد
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: Matrix.1372 در 31 تیر 1391، 10:22 ب‌ظ
یعنی ایشون ۳۰۰ تا فایل اولیه با ۳۰۰ تا فولدر دارن.
که ۳۰۰ تا فایل ثانویه باید یکی یکی برن توی فولدرهای خودشون.
فک کنم اینطوری باشه.
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: nixoeen در 01 امرداد 1391، 05:07 ق‌ظ
دقیقا بر مبنای مثالی زدید نوشتمش. این فایل رو در مکانی قرار بدید که دو پوشه asli و build قرار داده شده، بهش مجوز اجرا بدید و اجراش کنید. (یا با خود python اجراش کنید)
#!/usr/bin/python
import os,shutil
for root1,dirs1,files1 in os.walk("asli"):
for file1 in files1:
for root2,dirs2,files2 in os.walk("build"):
for file2 in files2:
if file2[-6:].lower() == "as.dwg" and (file2[:-6] == file1[:-4] or file2[:-7] == file1[:-4]):
print root2+"/"file2+" -> "+root1+"/"
shutil.copy(root2+"/"+file2,root1+"/")
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: سلمان م. در 01 امرداد 1391، 09:32 ق‌ظ
دقیقا بر مبنای مثالی زدید نوشتمش. این فایل رو در مکانی قرار بدید که دو پوشه asli و build قرار داده شده، بهش مجوز اجرا بدید و اجراش کنید. (یا با خود python اجراش کنید)
#!/usr/bin/python
import os,shutil
for root1,dirs1,files1 in os.walk("asli"):
for file1 in files1:
for root2,dirs2,files2 in os.walk("build"):
for file2 in files2:
if file2[-6:].lower() == "as.dwg" and (file2[:-6] == file1[:-4] or file2[:-7] == file1[:-4]):
print root2+"/"file2+" -> "+root1+"/"
shutil.copy(root2+"/"+file2,root1+"/")
دستت درد نکنه من از ظرف انیشتین۴ ازت تشکر می‌کنم.
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: anishtain4 در 01 امرداد 1391، 01:47 ب‌ظ
دقیقا بر مبنای مثالی زدید نوشتمش. این فایل رو در مکانی قرار بدید که دو پوشه asli و build قرار داده شده، بهش مجوز اجرا بدید و اجراش کنید. (یا با خود python اجراش کنید)
#!/usr/bin/python
import os,shutil
for root1,dirs1,files1 in os.walk("asli"):
for file1 in files1:
for root2,dirs2,files2 in os.walk("build"):
for file2 in files2:
if file2[-6:].lower() == "as.dwg" and (file2[:-6] == file1[:-4] or file2[:-7] == file1[:-4]):
print root2+"/"file2+" -> "+root1+"/"
shutil.copy(root2+"/"+file2,root1+"/")

آقا دست درد نکنه، خیلی خیلی کمک کردی
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: doomhammer65ir در 01 امرداد 1391، 03:14 ب‌ظ
ASLI="";
BUILD="";

find $BUILD/* -name '*.dwg' -exec rename 's/ /_/g' {} \;

find $ASLI/* -name '*.dwg' > address_of_dwg_files
find $ASLI/* -name '*.dwg' -exec basename {} \; > dwg_files

sed  's/\.dwg//g'  dwg_files > dwg_files_base


for ((i=1 ; i<=$(cat dwg_files_base | wc -l ) ; i++))
do
TEMP=$(sed -n ''$i'p' dwg_files_base);
cp $(find $BUILD/* -name ''$TEMP'_as.dwg') $( echo $( dirname  `sed -n ''$i'p' address_of_dwg_files` )/ )
done
 
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: anishtain4 در 02 امرداد 1391، 02:12 ق‌ظ
doomhammer jan daset kheili dard nakone, koli az in ghesmate rename estefade kardam. albate bayad ye seri handle ham khodam behesh ezafe konam
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: سلمان م. در 02 امرداد 1391، 02:47 ق‌ظ
دوست عزیز لطفا با دبیره‌ی فارسی بنویسید و نه «پینگیلیش»
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: phantasm در 17 امرداد 1391، 09:28 ب‌ظ
با یک خط اینجوری میشه :)

 ls *.as directory1 | xargs -I {} cp directory1/{} directory2
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: nixoeen در 17 امرداد 1391، 11:50 ب‌ظ
با یک خط اینجوری میشه :)
 ls *.as directory1 | xargs -I {} cp directory1/{} directory2
این چیزی نیست که ایشون می‌خواستن :) برنامه شما یک کار دیگه رو انجام میده  ;)
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: phantasm در 18 امرداد 1391، 12:51 ق‌ظ
اتفاقا دقیقا همون کارو انجام میده .من اول کدم رو تست کردم بعد پست زدم .منطقش هم خیلی سادست !
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: nixoeen در 18 امرداد 1391، 12:57 ق‌ظ
اتفاقا دقیقا همون کارو انجام میده .من اول کدم رو تست کردم بعد پست زدم .منطقش هم خیلی سادست !
خیر :)
برای مثال فایل‌هایی که ایشون گفتند آخرشون dwg داره و as قبل از اون میاد. فایل‌ها در پوشه‌های مختلف قرار دارند. حروف as ممکنه کوچیک و بزرگ باشند، مثلا:
build/dorostC/3as.dwg
build/dorostA/4 As.dwg
build/dorostD/5 as.dwg
و ...
عنوان: پاسخ : درخواست shell script
ارسال شده توسط: phantasm در 18 امرداد 1391، 01:07 ق‌ظ
نقل‌قول
سلام دوستان
من یه تعداد زیادی فایل دارم ( در حد 300 تا)
این فایل ها دو دسته هستن، یه سری با اسامی اصلی، و فایل های تکمیلی که همون اسم اصلی رو دارن و آخرشون AS نوشته شده. مشکل من اینه که اینا کنار هم نیستن. فایل های اصلی همشون تو یه فولدر هستن، و فایل های تکمیلی تو یه فولدر دیگه اما ساختار فولدرها یک شکل نیست. از دوستان کسی می تونه یه شل اسکریپت بنویسه که فایل های تکمیلی رو کپی کنه کنار اصلیشون؟

کد نیازهای بالا رو برطرف میکنه ....
خیلی از دقت نظرت ممنونم :)