在bash中有一种方法可以将字符串转换为小写字符串吗?
例如,如果我有:
a="Hi all"
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
"hi all"
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习在python中使用NLTK包.特别是,我需要在NLTK中使用penn树库数据集.据我所知,如果我打电话,nltk.download('treebank')我可以获得5%的数据集.但是,我在tar.gz文件中有一个完整的数据集,我想使用它.在 这里据说:
如果您可以访问Penn Treebank的完整安装,则可以将NLTK配置为加载它.下载ptb软件包,并在目录nltk_data/corpora/ptb中放置Treebank安装的BROWN和WSJ目录(符号链接也可以).然后使用ptb模块而不是treebank:
所以,我从终端打开了python,导入了nltk并输入了nltk.download('ptb').使用此命令,在我的~/nltk_data目录下创建了"ptb" 目录.最后,现在我有了~/nltk_data/ptb目录.在里面,正如我上面给出的链接所示,我已经放了我的数据集文件夹.所以这是我的最终目录层次结构.
$: pwd
$: ~/nltk_data/corpora/ptb/WSJ
$: ls
$:00 02 04 06 08 10 12 14 16 18 20 22 24
01 03 05 07 09 11 13 15 17 19 21 23 merge.log
Run Code Online (Sandbox Code Playgroud)
在00到24之间的所有文件夹中,有许多 .mrg文件,例如wsj_0001.mrg , wsj_0002.mrg 等等.
现在,让我们回答我的问题.再次,根据这里:
如果我写下列内容,我应该能够获取文件ID:
>>> from nltk.corpus import ptb
>>> print(ptb.fileids()) # doctest: +SKIP
['BROWN/CF/CF01.MRG', 'BROWN/CF/CF02.MRG', 'BROWN/CF/CF03.MRG', 'BROWN/CF/CF04.MRG', ...]
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我输入时print(ptb.fileids())我得到了空数组.
>>> print(ptb.fileids()) …Run Code Online (Sandbox Code Playgroud) 我需要帮助.我想以递归方式将所有文件重命名为目录.我有一个代码来测试,但它只在该文件夹中重命名而不是递归.如何以递归方式完成它.
这是我使用的代码
<?php
$directory="/data";
$files = scandir($directory);
foreach($files as $key=>$name){
$oldName = $name;
$newName = strtolower($name);
rename("$directory/$oldName","$directory/$newName");
}
?>
Run Code Online (Sandbox Code Playgroud) 我试图用shell脚本将所有目录和文件重命名为大写.我有什么工作,但不适用于子目录.由于目录名在脚本执行期间发生了变化,我得到了类似的东西mv: cannot stat './def/two/three': No such file or directory
我尝试过使用-depthfind,所以它会从下往上重命名.但仍然遇到同样的问题.我虽然cut试图分开路径/并重命名,但我不知所措.
这就是我所拥有的:
for i in `find . -name "*[a-z]*"`
do new_name=`echo $i | tr '[a-z]' '[A-Z]'`
mv $i $new_name
done
Run Code Online (Sandbox Code Playgroud)
我希望任何方向,因为我觉得这应该是一项常见的任务,但未能找到一些谷歌搜索的工作解决方案.
请注意,我不能使用,rename因为我的发行版不支持.
包括扩展。例如 file.txt --> FILE.TXT
如果有人能指出我的大致方向,那么我将不胜感激:)
这里只是一些随机文本,因为字符数对于 Stackoverflow 来说太低了......