我们有一个文件夹,里面有很多子文件夹和文件,其中一些包含冒号。这些文件不允许上传到 SharePoint,所以我想找到一种方法来获取所有包含冒号的文件的列表,以便我们可以重命名它们。
使用冒号时 Finder 搜索根本不起作用。
终端命令find / :
列出每个文件和文件夹。
有没有办法做到这一点?
答案1
根据我另一个“答案”的评论(对于常规评论来说太复杂了),用户希望查找并重命名包含不寻常/麻烦字符的文件。下面是一个旧的 Perl 脚本,它可以寻找任何目录下任何级别的文件,包括带有特殊字符的文件。
如果您尝试删除正则表达式中需要转义的字符,请像这样运行它:findfile.pl "\*"
您也可以选择在末尾添加一个目录,例如findfile.pl "\*" /opt
如果您尝试用“:”重命名文件(我无法重现),我认为您不需要转义冒号,但如果没有带冒号的文件,我就无法测试这一点。
由于用户想要重命名文件,只需修改最后一行的打印以根据要求重命名即可。
use strict;
use warnings;
use File::Find;
my $substring;
my $dir;
if ($#ARGV < 0) {
print "\nUSAGE: $0 <substring> [dir]\n\n";
print "The substring is compared against the names of files located\nin (or under) dir (which is \".\" if not specified).\n";
print "\nPlease enter the substring: ";
$substring = <>;
chomp $substring;
print "Please enter the directory: [.] ";
$dir = <>;
chomp $dir;
if ($dir eq "") { $dir = "." }
}
else {
$substring = $ARGV[0];
if ($#ARGV > 0) {
$dir = $ARGV[1];
}
else {
$dir = ".";
}
}
find(sub {if (m/$substring/i) {print "$File::Find::name\n"}}, $dir);
答案2
最终,我想从文件夹和文件名中删除这些特殊字符。我最终安装了 xcode 和 homebrew 以及 homebrew 的“重命名”组件。这最终允许我为每个字符使用一行代码。
- 打开终端并运行
xcode-select –install
- 按照提示进行安装。
- 下载 HomeBrew (https://brew.sh/)通过将以下内容放入终端(需要密码):
curl -fsSL -o install.sh https://raw.githubusercontent.com/Homebrew/install/master/install.sh
- 使用安装
/bin/bash install.sh
- 使用安装“重命名”
brew install rename
- 使用 cd 和 ls 并找到要重命名的文件夹
- 该命令将查找单词“foo”并将其重命名为“bar”。
find . -exec rename -s 'foo' 'bar' {} +
完成后,我使用以下命令重命名特殊字符(OneDrive 不支持)。
find . -exec rename -s '"' '2' {} +
find . -exec rename -s '*' '8' {} +
find . -exec rename -s ':' '-' {} +
find . -exec rename -s '<' '(' {} +
find . -exec rename -s '>' ')' {} +
find . -exec rename -s '?' '' {} +
find . -exec rename -s '/' '_' {} +
find . -exec rename -s '\' '-' {} +
find . -exec rename -s '|' '-' {} +
find . -exec rename 's/^ *//' * {} + #remove leading blank spaces
find . -exec rename 's/ *$//' * {} + #remove trailing blank spaces