我有一堆以下格式的文件:
2014-11-19.8.ext
2014-11-26.1.ext
2014-11-26.2.blah.ext
2014-11-26_3.ext
2014-11-26.4.stuff_here.ext
2014-12-03.1. could be anything.ext
2014-12-032b.ext
2014-11-26 613 adva.ext
Run Code Online (Sandbox Code Playgroud)
我的目标是遍历整个文件列表,并从中获取日期格式YYYY-MM-DD
并将其存储在一个变量中以YYYYMMDD
供进一步处理(在我的情况下它将被推送到touch
命令中)。
所以通常我会匹配这个正则表达式: (\d{4})-(\d{2})-(\d{2}).*
然后用于$1$2$3
获取我想要的模式,但是我不确定如何在bash
/ 中执行此操作zsh
。
这如何在 shell 脚本中完成?
我有一个场景,我从可能不同时间点的驱动器中进行恢复,该时间点不仅在存在的文件方面可能有所不同,而且还存在一些损坏,其中许多文件明显损坏。
我们将左侧文件夹命名为“A”,右侧文件夹命名为“B”。
我有责任合并这两个图像,这样:
注意:此时日期几乎无关紧要,尽管在元数据中保留较旧的日期会很好。
这怎么能干干净净地完成呢?不幸的是,我必须对数十 TB 的数据执行此操作,因此如果我不知道如何自动化此操作,这将是一个非常漫长的过程。看来 90-95% 的内容是相同的,因此应该制定一种“设置好然后忘记它”的方法,为进行手动比较做好准备。
我遇到了一个奇怪的情况,我发现了许多设置了 000 权限的文件和文件夹。这很容易通过以下方式修复:
sudo find . -perm 000 -type f -exec chmod 664 {} \;
sudo find . -perm 000 -type d -exec chmod 775 {} \;
Run Code Online (Sandbox Code Playgroud)
不幸的是,我突然意识到问题有点复杂,有一些奇怪的权限,比如 044 和其他一些奇怪的设置。事实证明,这些都是散布和不可预测的。
有没有办法搜索诸如 0** 或其他此类非常有限的权限配置之类的权限?
我有两个地点/path/to/a
和/path/to/b
. 我需要在两个路径中查找重复的文件并仅删除/path/to/b
项目中的项目。 rmlint
生成相当大的删除脚本,但它包含两个路径(甚至空文件夹)中要删除的条目。
我使用rmlint
以下参数运行以获得此结果,我认为该结果只会/path/to/a
被选择删除:
rmlint -g -e -S p /path/to/a /path/to/b
Run Code Online (Sandbox Code Playgroud) 在切换到 Fish shell 之前,我经常使用zsh
with中的各种命令which some_command
。一个例子可能是:
$ file `which zsh`
/opt/local/bin/zsh: Mach-O 64-bit executable arm64
/bin/zsh: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64
- Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e
- Mach-O 64-bit executable arm64e]
/bin/zsh (for architecture x86_64): Mach-O 64-bit executable x86_64
/bin/zsh (for architecture arm64e): Mach-O 64-bit executable arm64e
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时fish
失败了:
$ which zsh
/opt/local/bin/zsh
$ file `which zsh`
`which: cannot open ``which' (No such file or directory)
zsh`: …
Run Code Online (Sandbox Code Playgroud) shell ×4
bash ×2
shell-script ×2
zsh ×2
diff ×1
find ×1
fish ×1
osx ×1
permissions ×1
rmlint ×1