工具:把Mac上某个目录下所有文件移动到一层目录下

输出超长字符串

#define NSLog(FORMAT, ...) fprintf(stderr,"%s\n",[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String] );

比如说,某个文件夹下有很多文件,并且层级很深。想要把这些文件都放到同一个文件夹下。

 变成这样

可以使用下面代码执行,一定要建立命令行项目。

#import "FileToOnePath.h"

/// 要处理的文件夹路径
static NSString *const FileToOnePathDirectoryPath = @"/Users/admin/Downloads/ULSetting";


@implementation FileToOnePath

+ (void)load {

    [self fileToOnePath];
}

// 文件挪到一个目录下
+ (void)fileToOnePath {

    NSString *filePath = FileToOnePathDirectoryPath;
    BOOL fileExist = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
    if (!fileExist) {
        NSLog(@"文件不存在,结束");
    }

    NSArray *array = [[NSFileManager defaultManager] subpathsAtPath:filePath];
    NSLog(@"%@",array);

    for (NSString *path in array) {

        NSString *fullPath = [filePath stringByAppendingPathComponent:path];

        BOOL isDir = NO;
        [[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir];
        /// 是文件夹, 不用处理,后面统一删除
        if (isDir) {
            continue;
        }

        // 是文件
        NSError *error = nil;
        NSString *toPath = [filePath stringByAppendingPathComponent:path.lastPathComponent];
        [[NSFileManager defaultManager] moveItemAtPath:fullPath toPath:toPath error:&error];
        if (error) {
            NSLog(@"出错了 %@ ",error);
        } else {
            NSLog(@"挪动成功 %@ %@",fullPath,toPath);
        }
    }

    for (NSString *path in array) {

        NSString *fullPath = [filePath stringByAppendingPathComponent:path];

        BOOL isDir = NO;
        [[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir];
        /// 是文件夹, 不用处理,后面统一删除
        if (isDir) {
            [[NSFileManager defaultManager] removeItemAtPath:fullPath error:nil];
        }
    }
}

@end

查找工程下的所有log所在文件和log内容。

1.查找对应目录下所有的文件

2.读取文件内容

3.取出每一行信息

4.判断每行信息是否包含log


#import "FindAllChineseLog.h"
#import "Header.h"

/// 要处理的文件夹路径
static NSString *const FindAllChineseLogDirectoryPath = @"工程路径";

@interface FindAllChineseLog ()

@property (nonatomic, assign) NSInteger lineNum;

@property (nonatomic, strong) NSArray *logStrArray;

@end


@implementation FindAllChineseLog

+ (void)load {
    FindAllChineseLog *tool = [[FindAllChineseLog alloc] init];
    [tool findAllChineseLog];
}

// 文件挪到一个目录下
- (void)findAllChineseLog {

    NSString *filePath = FindAllChineseLogDirectoryPath;
    BOOL fileExist = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
    if (!fileExist) {
        NSLog(@"文件不存在,结束");
    }

    NSArray *array = [[NSFileManager defaultManager] subpathsAtPath:filePath];

    for (NSString *path in array) {

        NSString *fullPath = [filePath stringByAppendingPathComponent:path];

        BOOL isDir = NO;
        [[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir];
        /// 是文件夹, 不用处理,后面统一删除
        if (isDir) {
            continue;
        }


        // 是.m文件, 其他文件不可能存在中文日志
        if ([path.lastPathComponent containsString:@".m"]) {
            [self handleFile:fullPath];
        }


    }
}

- (void)handleFile:(NSString *)filePath {
    @autoreleasepool {

        NSError * error = nil;
        NSString *str = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
        if (error) {
            NSLog(@"出错了, %@ %@",filePath,error);
        }

        NSArray *array = [str componentsSeparatedByString:@"\n"];
        [array enumerateObjectsUsingBlock:^(NSString *  lineStr, NSUInteger idx, BOOL * _Nonnull stop) {
            lineStr = [lineStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
            if ([self checkLineStr:lineStr]) {
                NSLog(@"%zd %@ %@",self.lineNum,filePath,lineStr);
                self.lineNum ++;
            }

        }];

    }


}

/// 1.包含log,  2.没有被注释
- (BOOL)checkLineStr:(NSString *)lineStr {
    if ([lineStr containsString:@"Log"]) {

        for (NSString *logStr in self.logStrArray) {
            // 包含log
            if ([lineStr containsString:logStr]) {
                // 2.没有被注释
                if ([lineStr hasPrefix:@"//"] == NO) {
                     return YES;
                }
            }
        }
    }

    return NO;
}


- (NSArray *)logStrArray {

    if (_logStrArray == nil) {
        _logStrArray =@[
            @"NSLog",
            @"DDLog"
        ];
    }
    return _logStrArray;
}

@end

GitHub - guochaoshun/GCS_OC_StringTool

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值