গ্রুভি: রিকার্সিভভাবে ফাইলগুলোর নাম পরিবর্তন করুন
প্রকাশিত: 29 July 2019
আমার টিভি ভিডিও প্লেয়ারের নিজের একটি পদ্ধতি চলছে।
একটি ফাইল থেকে অন্য ফাইলে সতত পড়াশোনা
এবং তার চালানোর পদ্ধতি 1…..mp4 থেকে 10….mp4-এ যাওয়া,
এবং 1…mp4 থেকে 2….mp4 নয়
সমস্যা হল যে প্রায় 900টি ফাইল এবং ফোল্ডার আছে।
বি�িঙ্গো গ্রুভি ব্যবহার করে কিছুকে ম্যানিপুলেট করার একটি দুর্দান্ত উদাহরণ
ফাইলগুলো, নাম পরিবর্তন, ফাইলের নামে প্যাটার্ন অনুসন্ধান
অথবা ফাইল.
এখানে লক্ষ্য হলো __ দিয়ে শুরু হওয়া নামগুলো পরিবর্তন করা
একটি সংখ্যা এবং যের নামের দ্বিতীয় অক্ষর
এটি অংক নয়, আমি এই নামের شروعে একটি শূন্য যোগ করবো
renameFilesToStartWithTwoDigit.groovy
#!/usr/bin/env groovy
/**
* get a crossplateform separator
* @return
*/
static String getSeparator() {
System.getProperty("file.separator")
}
/**
* rename file
* @param file
* @param newName
* @return the renamed file
*/
static File rename(File file, String newName) {
assert file.renameTo(file
.parentFile.path +
getSeparator() +
newName)
new File(file
.parentFile.path +
getSeparator() +
newName)
}
String rootFolderPath = System.getProperty("user.home") +
"/Bureau/ng-courses/Udemy - Angular 7 " +
"(formerly Angular 2) - The Complete Guide"
File rootFolder = new File(rootFolderPath)
assert rootFolder.exists()
assert rootFolder.directory
assert rootFolder.canRead()
List<File> dirList = new ArrayList<>()
//Adding rootFolder in dirList
// just in case there is some files in it
dirList.add(rootFolder)
//looping to get list of directories
//recursively inside rootFolder
rootFolder.traverse { File file ->
!file.directory ?: dirList.add(file)
}
//looping through dirList
//to rename directories filling criterias
for (int i = dirList.size() - 1; i >= 0; i--) {
Character[] chars = dirList.get(i).name.chars
!(chars[0].digit && !chars[1].digit) ?:
dirList.set(i, rename(dirList.get(i),
"0${dirList.get(i).name}"))
if (dirList.get(i).directory) {
//looping through directory
//to rename file filling criterias
dirList.get(i).listFiles().each { File f ->
Character[] cs = f.name.chars
!(cs[0].digit && !cs[1].digit) ?:
rename(f, "0${f.name}")
}
}
}