গণনা করা হচ্ছে না mv
, এর জন্য আপনার আসলে কোনও বাইরের প্রক্রিয়া দরকার নেই - আপনি কেবল ধরণের পুফ করতে পারেন ।
ifsqz() ( LC_ALL=C sqz=$1
isf() { [ -e "$1" ] || [ -L "$1" ] ; }
set -- * ; set -f
for f do isf "$f" || break
IFS=$sqz; set -- $f; IFS=
isf "$*" || mv -- "$f" "$*"
done
)
তবুও, এর অর্থ mv
প্রতি ফাইলের অনুরোধ, এবং সম্ভবত rename
এটি আরও ভাল। যদিও শুধুমাত্র দেওয়া কাজ করা উচিত একটি POSIX mv
মধ্যে $PATH
এবং POSIX শেল।
সুতরাং, আমি এর জন্য এক ধরণের পাগল ডেমো নিয়ে এসেছি। পরীক্ষার সেটটি তৈরি করা হয়:
tee - - - - <<CGEN |\
dd cbs=90 conv=unblock |\
sed 'G;$!N'";s/^/touch -- '/;s/$/'/" |sh
$( #BEGIN CGEN
LC_ALL=C
i= n='"$((i=((i=i+1)==10||i==39||i==47)>0?(i+1):i))"'
printf '%b -_ ---___' $(
IFS=0; eval \
printf '"\\\\%04o\\\\%04o "' "$(
printf "$n"' "$i" '%s $(
printf %.252d
#END
))"))
CGEN
প্রথম স্থানে আমি প্রথমে স্বীকৃতি জানাব যে উপরের কমান্ডটি এমন ফলাফল তৈরি করে যা অন্যান্য উপায়ে আরও সহজেই পাওয়া যায়। তবে অন্যান্য উপায়গুলি সম্ভবত কীভাবে করা হবে $IFS
এবং একটি সামান্য (অসুস্থ?) কল্পনাশক্তি প্রদর্শন করবে না।
সুতরাং প্রথম বিটটি মোটামুটি সোজা-এগিয়ে রয়েছে:
tee
পাইপগুলি এর ইনপুটটির 5 অনুলিপিগুলি দেয় - হেরিডোকোমেন্ট বলে CGEN
dd
ব্লক প্রতি 90 বাইট এবং নতুন পাইপগুলিতে এটির ইনপুট অবরোধ করে ...
sed
সেই দুটি ব্লকের মধ্যে দুটি \n
ইভলাইন চরিত্রের সাথে '
যোগ দেয়, ফলাফলগুলি এককভাবে উদ্ধৃত করে এবং touch --
পাইপ আউট করার আগে প্রতিটি লাইন চক্রের জন্য স্ট্রিংকে প্রস্তুত করে ...
sh
যা শেল কমান্ড হিসাবে সমস্ত ইনপুট কার্যকর করে
#CGEN
বিট যদিও ... ওয়েল, সংক্ষেপে ...
নীচে printf
252 0s মুদ্রণ
শেষের জন থেকে পরবর্তী 252 পায় ''
নাল-স্ট্রিং আর্গুমেন্ট এবং প্রতিটি বিষয়বস্তু ছাপে জন্য $n
স্ট্রিং দ্বারা অনুসরণ" $i "
eval
printf
এটি 2 টি ব্যাকস্ল্যাশ টুকরো টুকরো টুকরো করে অষ্টাল নাম্বার হিসাবে ব্যাখ্যাটির ফলাফলগুলি মুদ্রণের আগে পরবর্তী যুক্তিগুলির ব্যাখ্যা করে
সর্বশেষে প্রতিটি জোড়ের জন্য printf
স্ট্রিং অনুসরণ করে অষ্টাল 2 এর জন্য বাইট মানগুলি মুদ্রণ করে-_ ---___
$n
একটি সমীকরণের সূচনা করা হয়েছে $i
যা 10, 39, বা 47 এর মান বাদ দিয়ে প্রতিটি মূল্যায়নের জন্য একের পর এক বৃদ্ধি পাবে - (যেগুলি \n
ewline, '
একক-উক্তি এবং /
যথাক্রমে ASCII দশমিকের মধ্যে স্ল্যাশ)
শেষ ফলাফলটি এমন এক ডিরেক্টরি যা আমার চরসেটে 1 থেকে 255 অবধি একক-উদ্ধৃতি (কেবলমাত্র আরও একটি sed s///
বিবৃতি এড়াতে এড়িয়ে যায় ) এবং /
স্ল্যাশ বাদে প্রচুর কুৎসিত ফাইল নাম ধারণ করে । এই ফাইলের নামগুলি দেখতে এইরকম:
(set -- *; printf '%s\n\n##############\n\n%s\n' "${9}" "${34}") | cat -A
---___ww -_ ---___xx -_ ---___yy -_ ---___zz -_ ---___{{ -_ ---___|| -_ ---$
$
___}} -_ ---___~~ -_ ---___^?^? -_ ---___M-^@M-^@ -_ ---___M-^AM-^A -_ ---___M-^BM-^B -_ ---___M-^CM-^C$
$
##############$
$
-_ ---___M-ZM-Z -_ ---___M-[M-[ -_ ---___M-\M-\ -_ ---___M-]M-] -_ ---___M-^M-^ -_ ---___M-_M-_ -_$
$
---___M-`M-` -_ ---___M-aM-a -_ ---___M-bM-b -_ ---___M-cM-c -_ ---___M-dM-d -_ ---___M-eM-e -_ ---___$
এখন আমি এই ফাইলগুলিতে কিছু তথ্য পাব:
chksqz() ( LC_ALL=C sqz=$1
set -- * ; set -f ; IFS= ; tc="$*"
printf '#%s\n' \
"There are $# files in this test directory." \
"All filenames combined contain a total of ${#tc} bytes."
IFS=$sqz ; set -- $* ; IFS= ; sc="$*"
printf "%s '$sqz'" \
"#Of which ${#sc} bytes are not"\
" and $((${#tc}-${#sc})) bytes are"
set +f ; unset IFS
printf ".\n#%s\n#Total:\t%d\n#Other:\t%d\n#'$sqz':\t%d\n" \
"And to confirm these figures:" \
$( printf %s * | wc -c
printf %s * | tr -d "$sqz" | wc -c
printf %s * | tr -dc "$sqz" | wc -c
))
chksqz '_ -'
আউটপুট
#There are 101 files in this test directory.
#All filenames combined contain a total of 17744 bytes.
#Of which 2692 bytes are not '_ -' and 15052 bytes are '_ -'.
#And to confirm these figures:
#Total: 17744
#Other: 2692
#'_ -': 15052
ঠিক আছে. এখন অবশেষে, কাজ করতে:
ifsqz '_ -'
chksqz '_ -'
আউটপুট
#There are 101 files in this test directory.
#All filenames combined contain a total of 2692 bytes.
#Of which 2692 bytes are not '_ -' and 0 bytes are '_ -'.
#And to confirm these figures:
#Total: 2692
#Other: 2692
#'_ -': 0
সফল! আপনি নিজের জন্য দেখতে পারেন:
ls
????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
???????????????????????????
???????????????????????????
???????????????????????????
????????????????????????????
????????????????????????????
????????????????
??????????????????????
????????????????????????
??????????????????????????
??????????????????????????
??????????????????????????
??????????????????????????
???????????????????????????
???????????????????????????
???????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????
??????????????????????????
????????????????????????
????????????????????
??????????????????
????????????????????????????
??
????????????????????????????
??????????????????????????
????????????????????????????
????????????????????????????
????????????????????!!""##
??????????????????!!""##$$
????????????????!!""##$$%%
????????????!!""##$$%%&&((
????????!!""??##$$%%&&(())
$$%%&&(())**??++,,..0011
%%&&(())**++??,,..00112233
&&(())**++,,??..0011223344
))**++,,..??0011223344556
**++,,..00??11223344556677
22334455667788??99::;;<<==>>
445566778899??::;;<<==>>??@@
5566778899::;;??<<==>>??@@AA
6778899::;;<<??==>>??@@AABB
8899::;;<<==??>>??@@AABBCCDD
\\]]^^``aa??bbccddeeffgghh
]]^^``aabbc??cddeeffgghhii
^^``aabbccdd??eeffgghhiijj
??@@AABBCCDDEE??FFGGHHIIJJKK
AABBCCDDEEFF??GGHHIIJJKKLLM
BBCCDDEEFFGG??HHIIJJKKLLMMNN
CCDDEEFFGGHHII??JJKKLLMMNNOO
EEFFGGHHIIJJ??KKLLMMNNOOPPQQ
ffgghhiijjkk??llmmnnooppqqrr
gghhiijjkkllmm??nnooppqqrrss
iijjkkllmmnn??ooppqqrrsstt
jjkkllmmnnoo??ppqqrrssttuuvv
kkllmmnnooppqq??rrssttuuvvww
LLMMNNOOPPQQRR??SSTTUUVVWWXX
MNNOOPPQQRRSS??TTUUVVWWXXYY
OOPPQQRRSSTT??UUVVWWXXYYZZ[[
PPQQRRSSTTUUVV??WWXXYYZZ[[\\
RRSSTTUUVVWW??XXYYZZ[[\\]]
ssttuuvvwwxx??yyzz{{||}}~~??
ttuuvvwwxxyyz??z{{||}}~~????
uuvvwwxxyyzz{{??||}}~~??????
wwxxyyzz{{||??}}~~??????????
xxyyzz{{||}}~~??????????????
YYZZ[[\\]]^^??``aabbccddee
ZZ[[\\]]^^``??aabbccddeeff