我正在 CentOS 服务器上工作,我必须四处移动并将数百万个文件整理在一起。我已经尝试了许多类似下面的内容,但所有这些都因参数列表太长错误而失败。
命令:
find ./ -iname out.* -type f -exec mv {} /home/user/trash
find ./paramsFile.* -exec cat > parameters.txt
Run Code Online (Sandbox Code Playgroud)
错误:
-bash: /usr/bin/find: Argument list too long
-bash: /bin/cat: Argument list too long
Run Code Online (Sandbox Code Playgroud)
或者
echo ./out.* | xargs -I '{}' mv /home/user/trash
(echo ./paramsFile.* | xargs cat) > parameters.txt
Run Code Online (Sandbox Code Playgroud)
错误:
xargs: argument line too long
xargs: argument line too long
Run Code Online (Sandbox Code Playgroud)
第二个命令也从未完成。我听说过一些关于通配符的事情,但我不确定我是否完全理解它。欢迎任何提示或建议!
我有一台安装了 ntpdate 的 Linux 机器,当我从 ssh 终端或手动 shell 脚本运行它时,它正在工作。
但是,当我将 shell 脚本添加到 crontab 时,出现错误
ntpdate:未找到命令
NTPSERVER=192.168.1.192
LOGPATH="/home/test/" ntpdate -q $NTPSERVER>$LOGPATH/tmp.txt
RETVAL=$?
如果 [ $RETVAL -ne 0 ] ; 然后
echo "Failure Unable to query NTP Server :">>$LOGPATH/ntpdebug.txt
date >>$LOGPATH/ntpdebug.txt
exit $RETVAL
fi
echo "本地时间:">>$LOGPATH/ntpdebug.txt 日期 >>$LOGPATH/ntpdebug.txt cat $LOGPATH/tmp.txt>>$LOGPATH/ntpdebug.txt
ntpdate $NTPSERVER
RETVAL1=$?
如果 [ $RETVAL1 -ne 0 ] ; 然后
echo "Failure Unable to connect NTP Server :">>$LOGPATH/ntpdebug.txt
date >>$LOGPATH/ntpdebug.txt
exit $RETVAL1
fi
echo "已同步" >>$LOGPATH/ntpdebug.txt
从这个页面,http://content.hccfl.edu/pollock/aunix1/filepermissions.htm,我知道我需要在目录中设置 +w 位来创建新文件和 +x 位来 cd 进入它/access它的索引节点。到目前为止,一切都很好。但是,我不能使用 vi/cat/nano/echo 等来做类似的事情:
echo hello > dir/file
Run Code Online (Sandbox Code Playgroud)
因为我无法访问dir的inode。我的问题是,如果无法访问 dir 中的 inode,如何在 dir 中创建/删除/重命名新文件?我可以使用编辑目录结构吗
vi dir
Run Code Online (Sandbox Code Playgroud)
并创建/编辑/重命名一个新文件?有教程可以这样做吗?
在 Linux 上,我可以取消设置环境变量(不是将其设置为空字符串,实际上使用--unset如下标志将其删除:
$ env --unset=DATABASE_URL rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
同样的命令在 Mac 上不起作用。等效的 mac 命令是什么?
我制作了一个 python 脚本来解析大量数据并保存结果,最终生成了约 162 个文件。该脚本将这些文件命名为Parsed_NameOfOriginal\n. 请注意\n最后的 不是有意的,而是由我的脚本以某种方式添加的。由于生成这些结果需要花费很多时间,因此我不想再次运行固定脚本。
有没有办法使用 Linux 终端或 shell 脚本以相同的名称重命名目录中的每个文件,但\n最后修剪它?
即Parsed_ResultA\n变为Parsed_ResultA。
注意:这是添加的新行字符,而不是文本\n
我有 2 个目录,它们应该包含相同的文件和相同的目录结构。
我认为其中一个目录缺少一些东西。
使用 bash shell 有没有一种方法可以比较我的目录并查看其中一个丢失的文件是否存在于另一个目录中?
总氮
安德里亚
aptitude(对你们这些老人来说,对用户较少敌意的包装器apt-get)在找到包时搜索和打印太多内容。如果我只想查看包名称,那么什么类型?
我想聪明人cut都能做到。
我尝试使用 来将 Wine 安装到我的 Oracle Linux 上apt-get install wine,但没有成功。
我以普通用户身份尝试过此操作,但显示此错误:
bash:apt-get:找不到命令。
我也尝试root过sudo apt-get install wine。它也会抛出一个错误:
ksai 不在 sudoers 文件中。此事件将被报告。
我将该用户添加到sudoers使用中visudo,如下所示:
ksai ALL=(ALL) ALL**
Run Code Online (Sandbox Code Playgroud)
这是没有用的。如何使安装工作正常进行?
例如,我有 100 个文件,它们的名称都有空格。其中之一是“ The Monkey King Return (2015).mkv”。
如何删除名称中的所有空格并替换为点字符,同时删除“(”和“)”?
结果应该是“ The.Monkey.King.Return.2015.mkv”。
我怎样才能批量执行此操作?
我实际上是通过 ssh 在我的 Synology NAS 中运行 shell 脚本,这是一个 BusyBox Linux 发行版,安装了 bash 和 ash,没有 gcc。已经尝试了好几天了,无法正确弄清楚。
可用工具:mv / xargs / sed / awk /其他标准linux cmd。
另外,如何递归地重命名子文件夹呢?
编辑:刚刚使用https://synocommunity.com/的 Debian Chroot 安装了 apt-get 并将 cmd 重命名到我的 Synology nas 中,所以现在可以了。
为了让需要简单答案的人,命令是:
find . -iname \*\ \*.\*|rename 's/\ /\./g'
Run Code Online (Sandbox Code Playgroud) 我想按第一列对文件进行排序,但必须从 5 个字符开始排序。我怎样才能做到这一点?
我的文件:
"TTTTCTTACA" 1 1
"TTTTCTTACC" 1
"TTTTCTTACT" 1 1
"TTTTCTTAGC" 1
"TTTTCTTATT" 2
"TTTTCTTCAA" 1 1 1
"TTTTCTTCAG" 1 2 1
"TTTTCTTCAT" 1 2 2
"TTTTCTTCCT" 2
"TTTTCTTCGG" 2 2
"TTTTCTTCTA" 1
"TTTTCTTCTG" 1
"TTTTCTTCTT" 1 2
"TTTTCTTGAA" 1
"TTTTCTTGCT" 1 1 1
"TTTTCTTTAA" 1
"TTTTCTTTAG" 1 1
"TTTTCTTTCT" 1
"TTTTCTTTGC" 1
"TTTTCTTTGG" 1 1
"TTTTCTTTGT" 1 1 2 1
"TTTTCTTTTA" 1
Run Code Online (Sandbox Code Playgroud)
我正在尝试:
sort -k1,1 file | uniq -s 6 -w 5
Run Code Online (Sandbox Code Playgroud)
当然,这是行不通的。也许排序有一些标志,但我没有找到它们。你有什么想法吗?