将多个文件移动到多个目录

时间:2016-09-06 17:19:35

标签: linux xargs mv

我有5个名为file1.txt,file2.txt ... file5.txt的文件,我想将每个文件移动到一个名为dir1,dir2 ... dir5的相应目录中。

所以file1.txt移动到dir1,file2.txt移动到dir2,依此类推。

有没有办法在命令行的一行中执行此操作,可能使用mvxargs

我只是建议xargs,因为我非常喜欢Robert Gamble提供的answer问题,询问如何将一个文件复制到多个目录。

echo dir1 dir2 dir3 | xargs -n 1 cp file1

3 个答案:

答案 0 :(得分:0)

我个人更喜欢依赖于public class TextGroup extends LinearLayout { EditText edit0; EditText edit1; EditText edit2; EditText edit3; public TextGroup(Context context, AttributeSet attrs) { super(context); View view = LayoutInflater.from(context).inflate(R.layout.edit_text_special, null); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); edit0 = (EditText) view.findViewById(R.id.edit_text0); edit1 = (EditText) view.findViewById(R.id.edit_text1); edit2 = (EditText) view.findViewById(R.id.edit_text2); edit3 = (EditText) view.findViewById(R.id.edit_text3); edit1.addTextChangedListener(watcher); this.addView(view, lp); } TextWatcher watcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int start, int count, int after) { } @Override public void afterTextChanged(Editable editable) { if ( edit1.getText().length() >= 3) { edit3.setText(String.valueOf(edit1.getText().toString().charAt(2))); } if ( edit1.getText().length() >= 2) { edit2.setText(String.valueOf(edit1.getText().toString().charAt(1))); edit1.setText(String.valueOf(edit1.getText().toString().charAt(0))); } } }; } 循环的解决方案,例如:

for

这可以通过for n in {1..5}; do echo mv -- "file$n.txt" "dir$n/"; done # ^^^^ remove that 完成,但我发现解决方案不那么优雅:

xargs

答案 1 :(得分:0)

你可以采用另一种方式,如果它不一定是连续整数的列表,并且dir*并不一定已经存在。

for f in *.txt; do mkdir dir${f: -5:1}; mv $f dir${f: -5:1}/; done

答案 2 :(得分:0)

使用GNU Parallel你会这样:

parallel mv {} {=s/file/dir/=} ::: *.txt
相关问题